Problemas com o OpenSSL no PHP - comportamento diferente para diferentes versões

(Esta questão foi originalmente publicada em ServerFault - eu a deletei e a movi para cá.)

Eu tenho uma máquina de desenvolvimento rodando o PHP 5.3.5 e uma máquina de produção rodando o PHP 5.3.8.

O código a seguir é executado na máquina de desenvolvimento:

<?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);

Na minha máquina de desenvolvimento, esse código gera um recurso e uma string codificada. Eu copiaria aqui, mas é claro que muda a cada vez. Na máquina de produção, esse código produz o número do recurso e os seguintes erros do 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

Infelizmente, instalar uma versão mais antiga do PHP na máquina de produção não é uma opção no momento por causa de outros aplicativos que estão rodando nela, o que requer o mínimo de 5.3.8.

Ajudaria se eu atualizasse para a versão 5.4.x?

Eu sei que a versão do OpenSSL em 5.3.5 é 0.9.8, enquanto a versão em 5.3.8 é 1.0.0. Eu imagino que possa haver um problema lá. Existe alguma maneira de contornar isso?

Eu tentei descobrir o máximo possível do site OpenSSL.org e do rastreador de bugs do PHP, mas não sei o que estou procurando.

Saudações,

Philip

questionAnswers(2)

yourAnswerToTheQuestion