前回の続き?
文字列の暗号化とサーバ←→クライアント間の暗号化はまったく別のレイヤのお話です。
単に文字列だけではなく、サーバからの応答それ自体を暗号化しないといけませんので、PHPで云々ではなくApacheの設定、httpd.confの編集が必要です。
XAMPPの場合、関連する内容毎に設定ファイルを分けてくれていますので、C:\xampp\apache\conf\extra\httpd-ssl.confあたりがSSL関連の設定になります。
で、SSLCertificateFile、SSLCertificateKeyFileあたりがその設定になるのですが……実はhttpsでアクセスした場合、XAMPPでは最初から前回作成したserver.crt、server.keyが自動的に使われるようになっています。
これまでのURLを単にhttpsにするだけで、普通にSSLによる暗号化通信が可能となります。
問題点としては、認証局に認証を受けていないオレオレ証明書なので、初回通信時に警告が現れ、「許可する」を選ばない限り通信ができません。
これは、その証明書が、ルート認証局を辿れないだけの正しい証明書なのか、それとも悪人が途中ですり替えた偽物の証明書なのか区別が付かないためです。
これを銀行なんかがやってしまうと大問題なわけですが、個人レベルで高い金払って購入するのも馬鹿っぽいのでまあこんなものでいいでしょう。
さて、httpd-ssl.confにある、
<VirtualHost _default_:443>
の部分がSSL接続時の動作となっています。
デフォルトではhttp通信時と同じになっていますが、ここを変更することでSSL通信時のみの挙動を変更するなんてことができます。
<VirtualHost _default_:443>
DocumentRoot "C:/xampp/htdocs_ssl"
このようにすると、httpで接続した場合は元々の表示先であるところの"C:/xampp/htdocs"フォルダが、https接続の場合はこちらで設定した"C:/xampp/htdocs_ssl"フォルダがドキュメントルートになります。
このようにフォルダを分けることで、httpではどうやっても"C:/xampp/htdocs_ssl"に接続できない、といった設定を行うことができます。
会員登録などで必ずSSLを使わせたい場合などに有効です。
ただし、本気で個人情報を扱うような場合、オレオレ証明書は使用してはいけません。
しまった、PHP関係ない。