MAMPのSSL対応 / PHPのバージョン変更方法


実務でしばらくMAMPを使っていたので、MAMPのインストール&初期設定+αをしてみるのその後設定した諸々です。
基本的には上記の記事での設定は、すでに済んでいるものとします。

SSL設定

バーチャルホストでのSSLはあまり情報がまとまってなかったので、備忘録も兼ねてます。
参考にさせていただいたページは一番下に。

以下の手順で鍵をつくります。いわゆるオレオレ証明書です。

keysのディレクトリを作ります。

$ mkdir /Applications/MAMP/conf/apache/keys

作ったkeysのディレクトリに移動します。

$ cd /Applications/MAMP/conf/apache/keys/

ローカル認証局の秘密鍵を作る

$ openssl genrsa -des3 -out local-ca.key 2048

パスフレーズを聞かれるので入力。メモしてください。

ローカル認証局の証明書を作る

$ openssl req -x509 -new -nodes -key local-ca.key -sha256 -days 1825 -out local-ca.pem

先ほどメモったパスフレーズを入力。
「Common Name」のところだけ「localhost」と入力して、残りはEnterで大丈夫です。

Enter pass phrase for local-ca.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (eg, fully qualified host name) []:localhost
Email Address []:

これでlocal-ca.pemというローカル認証局の証明書ができました。

サーバの秘密鍵を作る

$ openssl genrsa -out server.key 2048

証明書署名要求(CSR)を作る

$ openssl req -new -key server.key -out server.csr

Extension Fileを作る

以下の内容でv3.extというファイルを作成します。

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost

サーバ証明書を作る

$ openssl x509 -req -in server.csr -CA local-ca.pem -CAkey local-ca.key -CAcreateserial -out server.crt -days 1825 -sha256 -extfile v3.ext

これで設定に必要な2つのファイル作成が完了しました。

  • server.crt
  • server.key

参考サイトでは、この後キーチェーンアクセスに証明書を追加して、セキュリティの警告画面が出ない様にするみたいなんですが、私の場合はキーチェーンアクセスに追加しても出続けてるので、この項目は飛ばします。
気になる方は、参考サイトさんで手順通りにどうぞ。

警告画面が出ても「詳細設定」からアクセスはできるはずです。

MAMPでの設定

httpd.confの設定

MAMPのアプリケーションフォルダ内、「httpd.conf」を修正し、SSLの設定を有効にします。
Applications > MAMP > conf > apache

# 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の設定

httpd-ssl.confの設定をします。
Applications > MAMP > conf > apache > extra > httpd-ssl.conf

この2つを書き換えます。

SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key"

以下の様に、先ほど作った証明書のディレクトリに書き換えます

SSLCertificateFile "/Applications/MAMP/conf/apache/keys/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/keys/server.key"

httpd-vhosts.confの設定

バーチャルホストでのSSL設定です。
Applications > MAMP > conf > apache > extra > httpd-vhosts.conf

設定してあるバーチャルホストを以下の様に書き換えます。

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/hoge"
    ServerName hoge
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin admin@localhost
    DocumentRoot "/Applications/MAMP/htdocs/hoge"
    ServerName hoge

    SSLEngine on
    SSLCertificateFile /Applications/MAMP/conf/apache/keys/server.crt
    SSLCertificateKeyFile /Applications/MAMP/conf/apache/keys/server.key
</VirtualHost>

ここまで設定できたらMAMPサーバーを再起動します。
これで、https://〜でアクセスできるようになるはずです。

PHPのバージョン変更方法

段階的なリニューアルの際に、古い環境を再現する必要がありまして、
そのような場合のPHPのバージョンの下げ方です。

初期設定では、以下のように近いバージョンの2種類しか選べません。

この選択肢を変更するには、Applications > MAMP > bin > php のフォルダ内の各バージョンphpフォルダの名前を変更します。
表示させたいバージョン以外にアンダースコアをつけておきます。

ここまで設定したら、MAMPを再起動します。
その後、もう一度MAMPを立ち上げ、上部のメニューバーより MAMP > PreferencesからPHPのタブを開くと

このように選択肢が変わっているはずです。

引用・参考

MAMPでMacのローカル環境にSSL(https://localhost)を設定する方法