ホームページ  >  記事  >  バックエンド開発  >  openssl 機能は https では使用できません

openssl 機能は https では使用できません

WBOY
WBOYオリジナル
2016-06-23 14:10:321106ブラウズ

問題: 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_public_encrypt() 関数が実行できないという問題が発生しました。
openssl_get_publickey() 関数は正常に通過しますが、openssl_public_encrypt() 関数は Apache をクラッシュさせます。

直接バックグラウンド実行: /path/php -f ssl-encry.php、結果は 1 と 2 のみで、3 番目は空です。
Windows環境で通常の出力をテストします。

この状況を解決するにはどうすればよいですか?


ディスカッションへの返信 (解決策)

openssl_get_publickey() 関数は正常に通過しますが、openssl_public_encrypt() 関数は Apache をクラッシュさせます。

Apache エラー ログを確認してください

1. Apache と php の ssl バージョンが一致していないため、同じ ssl を再設定すると実行できるようになります。
2. 実行結果はまだ 1 と 2 だけで、3 番目は空です。
その説明は何ですか?

解決された問題:
証明書とキーの権限が矛盾しています。0755 に変更してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。