Я пытаюсь использовать PHP-DKIM для отправки подписанных электронных писем DKIM.Он немного староват, поэтому мне пришлось кое-что изменить, но меня это озадачило:
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
Соответствующий раздел кода (обратите внимание, я добавил $ pkeyid, изначально закрытый ключ был просто передан прямок функции open_ssl
, которая тоже не работала)
$pkeyid = openssl_get_privatekey($open_SSL_priv);
if (openssl_sign($s, $signature, $pkeyid))
return base64_encode($signature) ;
else
die("Cannot sign") ;
Так что, очевидно, здесь происходит что-то действительно плохое.Однако я знаю, что мой закрытый ключ и открытый ключ действительны.Я даже попробовал пример ключа, предоставленного в комментариях для openssl_sign
, который не работал
$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;
Я не знаю, что делать.OpenSSL "0.9.8e-fips-rhel5 01 июля 2008" установлен и активен в PHP.И ключ, который я сгенерировал, и этот ключ, как известно, работают.Так почему же openssl_sign
продолжает падать?