この記事は、Mountain Lion に最初から入っている Apache と OpenSSL を使って SSL(https) 通信する環境を整えたときのメモです。
この記事のゴール
ブラウザから https://localhost にアクセスして、「It Works!」のページを表示する。
目次
- 動作確認環境
- サーバ秘密鍵を作成する
- 証明書署名要求(CSR)を作成する
- 自己署名証明書(CRT)を作成する
- 秘密鍵と証明書を Apache から参照できる場所に設置
- Apache が SSL 設定ファイルを読み込めるようにする
- Apache を再起動して動作確認
動作確認環境
- OS X Mountain Lion
サーバ秘密鍵を作成する
乱数ファイルを MD5 で作成します。この後、サーバ秘密鍵を作る時に使います。
$ openssl dgst -md5 /var/log/system.log > rand.dat
パスフレーズ付きサーバ秘密鍵を作成します。
$ openssl genrsa -des3 -rand rand.dat 1024 > server.pem
ローカル用の証明書ですので、利便性を重視してパスフレーズを解除します。パスフレーズを解除しない場合、apache 再起動時にパスワードを求められます。
$ openssl rsa -in server.pem -out server.pem
証明書署名要求(CSR)を作成する
証明書署名要求(CSR:Certificate Signing Request)を作成します。
$ openssl req -new -days 365 -key server.pem -out csr.pem
途中で入力を求められます。以下は入力例です。Common Name 以外は適当で構いません。Common Name は、「localhost」 を入力します。ブラウザに入力するホスト名(FQDN)と一致させる必要があります。
- Country Name(国名)
- JP
- State or Province Name(都道府県)
- Tokyo
- Locality Name(市町村)
- Shibuya-ku
- Organization Name(組織名)
- Karakaram
- Organizational Unit Name(部署名)
- Sales
- Common Name(サーバ名:FQDN)
- localhost
- Email Address(メールアドレス)
- sample@example.com
- A challenge password
- 空欄
- An optional company name
- 空欄
自己署名証明書(CRT)を作成する
上記で作成した2ファイルを使い、自己署名証明書を作成します。
$ openssl req -in csr.pem -key server.pem -x509 -out crt.pem
これまでの操作で次の3ファイルができているはずです。
- server.pem
- 秘密鍵(Private Key)
- csr.pem
- 証明書発行要求(CSR : Certificate Signing Request)
- crt.pem
- 証明書(CRT : Certificate)
秘密鍵と証明書を Apache から参照できる場所に設置
Apache で SSL 通信するために、作成した秘密鍵と証明書を所定の場所に配置します。配置場所は ssl.conf に書かれています。
$ sudo vi /private/etc/apache2/extra/httpd-ssl.conf ... SSLCertificateFile "/private/etc/apache2/server.crt" ... SSLCertificateKeyFile "/private/etc/apache2/server.key" ...
上記の場所にコピーします。
$ sudo cp server.pem /private/etc/apache2/server.key $ sudo cp crt.pem /private/etc/apache2/server.crt
残ったファイルを削除します。
$ rm server.pem csr.pem crt.pem
Apache が SSL 設定ファイルを読み込めるようにする
httpd.conf の Include httpd-ssl.conf の設定がコメントアウトされていたら、コメントを解除します。
$ sudo vi /private/etc/apache2/httpd.conf ... # コメントをはずす Include /private/etc/apache2/extra/httpd-ssl.conf ...
Apache を再起動して動作確認
Apache を再起動して動作確認します。
$ sudo apachectl restart
https://localhost にアクセスします。「セキュリティ証明書が信頼できません」といったメッセージが表示されますが、自己証明書の場合表示されるメッセージですので、次に進みます。
It Works! のページが表示されればOKです。
うまく動かない方は、Apache のログを確認してみてください。
$ tail /private/var/log/apache2/error_log $ tail /private/var/log/apache2/access_log
まとめ
Mountain Lion に最初から入っている Apache と OpenSSL で環境を構築する方法を紹介しました。証明書の Common Name を変更すれば VirtualHost にも対応できます。ぜひ試してみてください。
