Macに最初から入っているApacheでSSL通信する環境を整えた

2013年3月16日

https-it-works

この記事は、Mountain Lion に最初から入っている Apache と OpenSSL を使って SSL(https) 通信する環境を整えたときのメモです。ブラウザから https://localhost にアクセスして、「It Works!」のページを表示するまでを紹介します。

動作確認環境

  • OS X Mountain Lion

目次

  1. サーバ秘密鍵を作成する
  2. 証明書署名要求(CSR)を作成する
  3. 自己署名証明書(CRT)を作成する
  4. 秘密鍵と証明書を Apache から参照できる場所に設置
  5. Apache が SSL 設定ファイルを読み込めるようにする
  6. 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です。

https-it-works

うまく動かない方は、Apache のログを確認してみてください。

$ tail /private/var/log/apache2/error_log
$ tail /private/var/log/apache2/access_log

-技術ブログ
-