私はPHP-DKIMを使用してDKIM署名付き電子メールを送信しようとしています。その少し古いので、私はいくつかのことを変更することがありましたが、この切り株は私:コードのPHP openssl_signで何も署名できませんか?
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") ;
は本当に悪い何かがここで起こっています。しかし、私は自分の秘密鍵と公開鍵が有効であることを知っています。私も何をすべきかの損失で
$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;
私は動作しませんでしたcomments for openssl_sign
で提供される例のキーを試してみました。 OpenSSL "0.9.8e-fips-rhel5 2008年7月1日"がPHPにインストールされ、アクティブになっています。私が生成したキーとそのキーの両方が正常に動作しています。だからopenssl_sign
はなぜ失敗しますか?
エラーメッセージのために 'openssl_error_string()'を試してみましたか?上記のコードは多かれ少なかれ私のために働きます。 – duskwuff
私もそれを動作させることができましたが、私のSSLバージョンはソースから構築され、0.9.8ブランチ(0.9.8r 2011年2月)の最新バージョンです。あなたが使っているバージョンとは何の関係もないことは確かですが、これはPHPやOpenSSLのバグです。このエラーメッセージは、偽の秘密鍵が与えられている場合、または特定のOpenSSL関数が鍵の読み取りに失敗した場合に返されます。 PHPソースからの 'BIO_new_mem_buf'や' PEM_read_bio_PrivateKey'への呼び出しに失敗している可能性があります。私はキーを取るそれは同様に問題を引き起こすかもしれないので、パスワードで保護されていないですか? – drew010
これは価値があります。また、 ''提供されたキーパラメータは強制できません... ''$ pkeyid'として' false'を渡すとエラーが発生します。これは 'openssl_get_privatekey'が失敗した場合に得られるものです。 – duskwuff