Ne signez rien avec PHP openssl_sign?

J'essaie d'utiliser PHP-DKIM pour envoyer la signature DKIM des e-mails. Il est un peu vieux donc j'ai dû changer certaines choses, mais cela souches moi:

Warning: openssl_sign() [function.openssl-sign]: supplied key param cannot be coerced into a private key in /.../pages/user/dkim.php on line 66
Cannot sign

Pertinentes de la section de code (notez que j'ai ajouté les $pkeyid, à l'origine de la clé privée a été vient de passer directement à la open_ssl fonction qui ne fonctionne pas)

$pkeyid = openssl_get_privatekey($open_SSL_priv);
if (openssl_sign($s, $signature, $pkeyid))
    return base64_encode($signature) ;
else
    die("Cannot sign") ;

Alors, évidemment, quelque chose de très mal se passe ici. Cependant, je sais que ma clé privée et la clé publique sont valides. J'ai même essayé de l'exemple de la clé fournie dans le commentaires pour openssl_sign qui n'a pas fonctionné

$open_SSL_pub=<<<EOD
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANDiE2+Xi/WnO+s120NiiJhNyIButVu6
zxqlVzz0wy2j4kQVUC4ZRZD80IY+4wIiX2YxKBZKGnd2TtPkcJ/ljkUCAwEAAQ==
-----END PUBLIC KEY-----
EOD;

$open_SSL_priv=<<<EOD
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBANDiE2+Xi/WnO+s120NiiJhNyIButVu6zxqlVzz0wy2j4kQVUC4Z
RZD80IY+4wIiX2YxKBZKGnd2TtPkcJ/ljkUCAwEAAQJAL151ZeMKHEU2c1qdRKS9
sTxCcc2pVwoAGVzRccNX16tfmCf8FjxuM3WmLdsPxYoHrwb1LFNxiNk1MXrxjH3R
6QIhAPB7edmcjH4bhMaJBztcbNE1VRCEi/bisAwiPPMq9/2nAiEA3lyc5+f6DEIJ
h1y6BWkdVULDSM+jpi1XiV/DevxuijMCIQCAEPGqHsF+4v7Jj+3HAgh9PU6otj2n
Y79nJtCYmvhoHwIgNDePaS4inApN7omp7WdXyhPZhBmulnGDYvEoGJN66d0CIHra
I2SvDkQ5CmrzkW5qPaE2oO7BSqAhRZxiYpZFb5CI
-----END RSA PRIVATE KEY-----
EOD;

Je suis à une perte de quoi faire. OpenSSL "0.9.8 e-fips-rhel5 01 Juil 2008" est installé et activé dans PHP. À la fois la clé, j'ai généré et que les clés sont connues de travail. Alors, pourquoi ne openssl_sign garder défaut?

Avez-vous essayé de vérifier openssl_error_string() pour un message d'erreur? Le code ci-dessus de plus ou de moins qui fonctionne pour moi.
J'ai été en mesure de le faire fonctionner ainsi, mais ma version de SSL est construit à partir de la source et est le dernier de la 0.9.8 branche (0.9.8 r Février 2011). Pas sûr que ça n'a rien à voir avec la version que vous utilisez, mais il est possible c'est un bug de ce genre de PHP ou de OpenSSL. Ce message d'erreur est retournée si une fausse clé privée est donnée, ou si certaines fonctions d'OpenSSL ne parviennent pas à lire la clé. Il se peut que les appels à BIO_new_mem_buf ou PEM_read_bio_PrivateKey à partir de la source en php ne sont pas. Je prends la clé n'est pas protégé par mot de passe car cela pourrait causer des problèmes?
Pour ce que ça vaut, aussi-je obtenir le même "clé fournie paramètre ne peut pas être contraint de..." d'erreur si je passe false comme $pkeyid, qui est ce que vous obtiendrez si openssl_get_privatekey a été un échec.
Ajouté le code pour obtenir tous les openssl erreurs, mais pour une raison étrange, apparemment vides.
Tout ce que je sais est le mot de passe n'est pas protégé et j'ai généré sur le serveur avec essentiellement openssl genrsa 512. Donc, à moins que quelque chose est différent entre les openssl exécutable que j'ai utilisé et la bibliothèque openssl, PHP, je ne vois pas pourquoi il ne pourrait pas

OriginalL'auteur TheLQ | 2011-12-29