MAMPでSSLを利用する方法。
以下、ブラウザからhttps://localhost/へアクセスできるようにする。
環境:
MacOS Sierra (10.12), MAMP 3.4/4.0.6
ssl証明書の場所:/Applications/MAMP/conf/apache/
1.ターミナルからOpenSSLで秘密鍵/公開鍵/電子署名の作成
1-1.秘密鍵ファイル(Private Key)の作成
(RSA: 暗号技術開発者のイニシャルから Ron Rivest, Adi Shamir, and Leonard Adleman)
cd /Applications/MAMP/conf/apache/
openssl genrsa -des3 -out server_private.key 2048
1-2. 証明書要求ファイル(Certificate Signing Request)の作成
(証明書要求ファイル作成には公開鍵が必要だが、opensslが自動的に生成し含める)
openssl req -new -key server_private.key -out server.csr
(以下、サーバに関する情報の入力が求められるが、MAMPで使う場合は省略してよいもよい。以下はOrganization NameとCommon Nameのみ追加)
Country Name (2 letter code) [AU]: JP
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:localhost ltd
Organizational Unit Name (eg, section) []:
Common Name (eg, 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 []:
1-3. 証明書ファイル(.crt=Certificate)の作成
本来はVeriSignなどの署名機関へ送るが、ここでは自身が署名機関として署名ファイルを作成する。
以下、x.509暗号/期限1年(365日)の場合
openssl x509 -in server.csr -days 365 -req -signkey server_private.key -out server.crt
1-4.公開鍵の作成
openssl rsa -in server_private.key -out server.key
2./Applications/MAMP/conf/apache/http.confの2箇所を修正
#Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf
↓
Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf
#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
↓
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
3./Applications/MAMP/conf/apache/extra/httpd-ssl.confを修正
・ServerNameをlocalhost:443に変更
・DocumentRootも必要であれば任意のものに修正
# General setup for the virtual host
DocumentRoot "/Applications/MAMP/htdocs"
ServerName localhost:443
ServerAdmin you@example.com
ErrorLog "/Applications/MAMP/Library/logs/error_log"
TransferLog "/Applications/MAMP/Library/logs/access_log"
4./Applications/MAMP/conf/apache/extra/httpd-vhosts.confを修正
・ServerNameをlocalhostに変更
・DocumentRootも必要であれば任意のものに修正
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any block.
#
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/Applications/MAMP/htdocs"
ServerName localhost
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
5.MAMPのApacheポートを80に変更して再起動
(ポート80でないとApacheの起動に失敗する)
以上。
参考: