WindowsバイナリでHTTPSを設定するメモ。
検証環境:
Windows 7 Professional SP1 32bit 日本語版 Apache/2.0.64 + mod_ssl, openssl
元ネタ:
1.OpenSSLに対応したWindows用のApache HTTPDサーバーのバイナリを入手。
最近ではApache HTTPDの本家サイトからmod_ssl + openssl 付きのWin32バイナリを入手できますので、それを使う。
あとは適宜インストールする。
2.証明書作成
詳しい解説は上記元ネタ、或いは適宜Webで検索。
openssl.exe : (Apache)\bin\openssl.exe openssl.cnf : (Apache)\conf\openssl.cnf
Vista, Win7での注意点:以下のコマンドライン操作は、管理者として実行したコマンドプロンプト上で行う。
> cd ...(Apache) > bin\openssl req -config conf\openssl.cnf -new -out localhost.csr ... > bin\openssl rsa -in privkey.pem -out localhost.key ... > bin\openssl x509 -in localhost.csr -out localhost.crt -req -signkey localhost.key -days 3650
以下のファイルが生成されているので、"conf\ssl" フォルダなどにまとめておく。
privkey.pem localhost.csr localhost.crt localhost.key
もしVista, Win7上で「管理者として実行」ではない通常のコマンドプロンプト上で操作した場合は、次のフォルダ以下に生成される。
C:\Users\(ユーザー名)\AppData\Local\VirtualStore\Program Files\...
適宜削除してやり直すなり、そのまま本来のフォルダに移すなりする。
3.Apacheの設定
mod_ssl.soをLoadModuleする。
LoadModule ssl_module modules/mod_ssl.so
SSLCertificateFileとSSLCertificateKeyFileに適宜設定する。
SSLCertificateFile conf/ssl/localhost.crt SSLCertificateKeyFile conf/ssl/localhost.key
あとは適当にhttpd.confやコマンドラインオプションを調整して動くようにすればOK。
"<IfDefine SSL>"とかでssl.confをまるごと囲ってる場合などは "-D SSL" をコマンドラインに混ぜておく。"<IfDefine SSL>"を外してしまえば "-D SSL" は不要。
Apacheも2.0と2.2系列とでは設定ファイルの構成が変わってきているので、その辺りの匙加減は適宜調整。