Problemas con OpenSSL en PHP - comportamiento diferente para diferentes versiones

(Esta pregunta se publicó originalmente en ServerFault: la eliminé y la moví aquí).

Tengo una máquina de desarrollo que ejecuta PHP 5.3.5 y una máquina de producción que ejecuta PHP 5.3.8.

El siguiente código se ejecuta en la máquina de desarrollo:

<?php
$key = "-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0x+2RiQ+LCZNAUcl/Ecf1NrTr
lhjOiHaVC+w/y+UJevqVcDstD22OJGwT13B9T47OuQG9BmzcZQYLcShUMhVD/Owu
9+8PcK51EnBd0lym6+z/WixpnqfQonyKiqq5ytmYKUlUv39J8QQUI2geyvY9VpWS
wyNcFUs7wPl2zsLCPQIDAQAB
-----END PUBLIC KEY-----";

$data = "Hello, world!";

$key1 = openssl_get_publickey($key);
print_r ($key1);
echo "<p>";

$res = openssl_public_encrypt($data, $encrypted_data, $key1, OPENSSL_PKCS1_PADDING);

echo base64_encode($encrypted_data);

En mi máquina de desarrollo, este código genera un recurso y una cadena codificada. Lo copiaría aquí, pero por supuesto cambia cada vez. En la máquina de producción, este código produce el número de recurso y los siguientes errores de PHP:

PHP Warning:  openssl_public_encrypt(): Don't know how to get public key from this private key in C:\xxx\test.php on line 15
PHP Warning:  openssl_public_encrypt(): key parameter is not a valid public key in C:\xxx\test.php on line 15

Desafortunadamente, la instalación de una versión anterior de PHP en la máquina de producción no es una opción en este momento debido a otras aplicaciones que se ejecutan en ella y que requieren 5.3.8 como mínimo.

¿Ayudaría si actualizo a 5.4.x?

Sé que la versión de OpenSSL en 5.3.5 es 0.9.8 mientras que la versión en 5.3.8 es 1.0.0. Me imagino que podría haber un problema allí. ¿Hay alguna manera de evitar eso?

He intentado descubrir todo lo que puedo en el sitio OpenSSL.org y en el rastreador de errores de PHP, pero no sé lo que estoy buscando.

Saludos,

Felipe

Respuestas a la pregunta(2)

Su respuesta a la pregunta