MAMPのバーチャルホストでSSLを使えるようにする for Mac

とにかくMAMPでSSL(https://)で見れるようにしたかったししなければならなかったのです。

環境

Mac Mojave
MAMP 5.1
Homebrewでopensslをインストールしておく

目次

(1)秘密鍵〜SSL証明書作成

(2)MAMP Apacheの設定

(3)https://hoge.localhostにアクセスしてみる

(1)秘密鍵〜SSL証明書作成

とにかくコマンドをかく。

$ cd /Applications/MAMP/conf/apache/
$ mkdir myssl
$ cd myssl
$ openssl genrsa 2024 > server.key //秘密鍵作成
$ openssl req -new -key server.key > server.csr //証明書署名要求作成(CSR)
→ここで質問がいくつか出てくるが1箇所以外全部エンター(省略)。
その1箇所:Common Nameは「localhost」と入力

$ openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt //SSL サーバ証明書作成
$ openssl x509 -text < server.crt //SSL サーバ証明書を確認

ポイント

・mysslというディレクトリ名はどんな名前でもいい
・本来は公開鍵も作成が必要だが -key オプションで秘密鍵を指定すれば自動的に公開鍵を取りだしてくれるから公開鍵を作成しなくていい
・-days 3650 は有効期限オプション(3650日 = 10年)
・-text オプションで、内容を確認できる
・server.csrとかserver.crtなどのファイル名は自由でOKだが、MAMPのデフォルトでこの名前が使用されているので、この名前にしておいた方があとで設定が楽(後述のApacheの設定にて)

ここまでで、mysslディレクトリに
server.key、server.csr、server.crtが作成されている

(2)MAMP Apacheの設定

httpd.conf  1箇所のみ変更

変更前

# 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 //有効化

 

httpd-ssl.conf   3箇所変更と2箇所追記する

まずは3箇所変更

変更前(1箇所目)

# 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”

変更後

# General setup for the virtual host
DocumentRoot “/Applications/MAMP/htdocs
ServerName localhost
ServerAdmin you@example.com
ErrorLog “/Applications/MAMP/Library/logs/error_log”
TransferLog “/Applications/MAMP/Library/logs/access_log”

変更前(2箇所目)

SSLCertificateFile “/Applications/MAMP/conf/apache/server.crt”

変更後

SSLCertificateFile “/Applications/MAMP/conf/apache/myssl/server.crt”

変更前(3箇所目)

SSLCertificateKeyFile “/Applications/MAMP/conf/apache/server.key”

変更後

SSLCertificateKeyFile “/Applications/MAMP/conf/apache/myssl/server.key”

2箇所に追記

##
## SSL Virtual Host Context
##

NameVirtualHost *:443 //追加

<VirtualHost _default_:443>

//httpd-ssl.confの一番最後に丸々追加

<VirtualHost *:443>
DocumentRoot “/Applications/MAMP/htdocs/hoge” //hogeはプロジェクトディレクトリ名
ServerName hoge.localhost //hogeは自由
SSLEngine on
SSLCertificateFile /Applications/MAMP/conf/apache/myssl/server.crt
SSLCertificateKeyFile /Applications/MAMP/conf/apache/myssl/server.key
</VirtualHost>

文法チェック

$ /Applications/MAMP/Library/bin/apachectl configtest

Syntax OKと出たらOKなのでMAMP を再起動

(3)https://hoge.localhostにアクセスしてみる

https://hoge.localhostにアクセス

Chrome「この接続ではプライバシーが保護されません」と警告が表示されるが「詳細」を押して、ページにアクセスする。

するとhttps://hoge.localhostが無事表示されるようになる

救世主様

救世主様

救世主様

さいごに

鍋は最高の食べ物

Blogs List

CONTACT

当事務所にご関心をお持ちいただきまして、ありがとうございます。
お仕事に関するご相談は下記よりお問い合わせください。

© Copyright 2020 NIAR All rights reserved.