どうしても仕事で必要になり、メインパソコン(Mac)の開発環境(MAMP)でSSLを使えるように設定したので、その記録を残しておきます。
秘密鍵とサーバ証明書を作成
まず、秘密鍵を設置するためのフォルダを作成します。
今回は「/Applications/MAMP/conf/apache/」内に「keys」という名前のフォルダを作成しました。
ターミナルを起動して、上で作成した「keys」ディレクトリに移動します。
$ cd /Applications/MAMP/conf/apache/keys/
次に、下のコマンドで「秘密鍵」を作成します。
$ openssl genrsa -des3 1024 >secret-key.pem
パスフレーズの入力を求められるので、適当な文字列を入力します。(あとで使うので忘れないように!)
Enter pass phrase: Verifying - Enter pass phrase:
「Verifying – Enter pass phrase:」と言われるので、確認のため同じパスフレーズを入力します。
これで、「secret-key.pem」が作成されたので、次に下のコマンドで「証明書署名要求(csr)」を作ります。
$ openssl req -new -key secret-key.pem -out csr.pem
またパスフレーズを求められるので、最初に決めたモノを入力。
Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:localhost Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
色々と聞かれますが、「Common Name」以外は省略(Enterのみ)して、「Common Name」には「localhost」を指定。
これで「csr.pem」が作成されたので、次にcrtファイルを作ります。
$ openssl x509 -in csr.pem -out server.cert -req -signkey secret-key.pem
またパスフレーズを求められるので、上と同じモノを入力。
最後に「パスワードなし秘密鍵」を作成します。(MAMPでは、パスワードなしの秘密鍵の方が良いらしい。)
$ openssl rsa -in secret-key.pem -out secret-key-nopass.pem
これで「secret-key-nopass.pem」が作成されます。
$ ls csr.pem secret-key-nopass.pem secret-key.pem server.cert
MAMPにSSL証明書を設定
まずMAMPの設定画面から、apacheのポート番号を「80」に設定。
次に「/Applications/MAMP/conf/apache/」の「httpd.conf」を開き、
# Secure (SSL/TLS) connections #Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf
を探して、以下の通り先頭の「#」を削除して有効化。
# Secure (SSL/TLS) connections Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf
そして先ほど有効化したファイル「/Applications/MAMP/conf/apache/extra/httpd-ssl.conf」を開いて、以下の通り編集します。
# General setup for the virtual host DocumentRoot "/Applications/MAMP/Library/htdocs" ServerName www.example.com:443 ServerAdmin you@example.com ErrorLog "/Applications/MAMP/Library/logs/error_log" TransferLog "/Applications/MAMP/Library/logs/access_log"
上の部分を探して、2行目の「DocumentRoot」を実際の環境に合わせて修正。
次に、サーバ証明書のパスを変更するため、
SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt"
の部分を、
SSLCertificateFile "/Applications/MAMP/conf/apache/keys/server.cert"
に修正。
続いて、秘密鍵のパスを変更するため、
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key"
の部分を、
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/keys/secret-key-nopass.pem"
に修正。
以上ですべて完了です。
最終確認
最後に、MAMPを起動(起動中の場合は、サーバーを再起動)して、「https://localhost/MAMP/?language=Japanese」にアクセスできるか確認します。
(セキュリティの警告は無視して進めます。)
スタートページが問題なく表示されれば、SSLに関する設定は問題ないハズなので、あとはドキュメントルート下に設置した自分のプロジェクトの動作を確認して、正しく表示されればOKです。
コメント
[…] MAMPでSSL(https通信)を使えるようにする手順 | monotone blog […]