この記事は、Mountain Lion に最初から入っている Apache と OpenSSL を使って SSL(https) 通信する環境を整えたときのメモです。ブラウザから https://localhost にアクセスして、「It Works!」のページを表示するまでを紹介します。
動作確認環境
- OS X Mountain Lion
目次
- サーバ秘密鍵を作成する
- 証明書署名要求(CSR)を作成する
- 自己署名証明書(CRT)を作成する
- 秘密鍵と証明書を Apache から参照できる場所に設置
- Apache が SSL 設定ファイルを読み込めるようにする
- Apache を再起動して動作確認
サーバ秘密鍵を作成する
乱数ファイルを 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 -key server.pem -out csr.pem
途中で入力を求められます。全部デフォルト値の空欄で Enter キーで構いません。
Country Name(国名):
State or Province Name(都道府県):
Locality Name(市町村):
Organization Name(組織名):
Organizational Unit Name(部署名):
Common Name(サーバ名:FQDN):
Email Address(メールアドレス):
A challenge password:
An optional company name:
自己署名証明書(CRT)を作成する
上記で作成した2ファイルを使い、自己署名証明書を作成します。有効期限は 365 日に設定しています。
$ openssl req -days 365 -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