どうしても仕事で必要になり、メインパソコン(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です。