問題: Linux+apache2+php5 の環境で、https にアクセスできるように ssl を設定し、テスト コードを実行します:
<?php#ssl-encry.php$source = "This is encry-content.";echo "1.Source: $source";$fp=fopen("/path/to/certificate.crt","r");$pub_key=fread($fp,8192);fclose($fp);openssl_get_publickey($pub_key);openssl_public_encrypt($source,$crypttext,$pub_key);echo "2.String crypted: $crypttext";$fp=fopen("/path/to/private.key","r");$priv_key=fread($fp,8192);fclose($fp);// $passphrase is required if your key is encoded (suggested)$passphrase = '';$res = openssl_get_privatekey($priv_key,$passphrase);openssl_private_decrypt($crypttext,$newsource,$res);echo "3.String decrypt : $newsource";?>
openssl_get_publickey() 関数は正常に通過しますが、openssl_public_encrypt() 関数は Apache をクラッシュさせます。
Apache エラー ログを確認してください
1. Apache と php の ssl バージョンが一致していないため、同じ ssl を再設定すると実行できるようになります。
2. 実行結果はまだ 1 と 2 だけで、3 番目は空です。
その説明は何ですか?
解決された問題:
証明書とキーの権限が矛盾しています。0755 に変更してください。