- Apacheのドキュメント:core - Apache HTTP サーバ
- HTTPS - Wikipedia
大筋は Apache + SSL がいいかんじ。
以下は設定中躓いたところ。
openssl req ~が unable to load '/usr/local/ssl/openssl.cnf'となって動かない
openssl.cnfを\usr\local\ssl\openssl.cnfに移動することで動く。
SSLの設定後再起動して、ちゃんとApacheが動いてるのに、https://127.0.0.1/を開くことができない
IISが443を使ってることがある。
自分の環境では netstat -nab としてポートをListenしている実行ファイルをリストさせたところinetinfo.exeがListenしてた。 World Wide Web Publishingサービスを止めることでListenしなくなった。
<IfDefine SSL>をコメントアウトしないと動作しない
<IfDefine SSL>はApacheを起動するときに-DSSLとしたときにのみ有効になるブロックを定義するもの。 (Ref:core - Apache HTTP サーバ)
このため、例えばWindowsのサービスに設定するなど、コマンドライン引数を指定するのがめんどくさい場合外してしまうのも手かもしれない。
accesslogやerrorlogに\x80L\x01\x03や\x16\x03\x01が記録されて失敗している場合
accesslogが
xxx.xxx.xxx.xxx - - [xx/xxx/xxxx:xx:xx:xx +xxxx] "\x80L\x01\x03" 501 369 0 xxx.xxx.xxx.xxx - - [xx/xxx/xxxx:xx:xx:xx +xxxx] "\x16\x03\x01" 501 368 0 xxx.xxx.xxx.xxx - - [xx/xxx/xxxx:xx:xx:xx +xxxx] "\x16\x03\x01" 501 368 0
となっていたり、 errorlogが
[xxx xxx xx xx:xx:xx xxxx] [error] [client xxx.xxx.xxx.xxx] Invalid method in request \x80L\x01\x03 [xxx xxx xx xx:xx:xx xxxx] [error] [client xxx.xxx.xxx.xxx] Invalid method in request \x16\x03\x01
となっている場合、これはHTTPSのリクエストがHTTPとして処理されてしまっているためらしい。 (Ref:WebSphere Forum :: トピックを表示 - SSLが機能しません)
自分の環境では
<VirtualHost *:443>
とすることで直った。