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

実務でしばらくMAMPを使っていたので、[MAMPのインストール＆初期設定＋αをしてみる](https://qiita.com/shiki_neki/items/35d73f57615ed1f1d4fb)のその後設定した諸々です。
基本的には上記の記事での設定は、すでに済んでいるものとします。


# 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
<img width="623" alt="スクリーンショット 2020-04-09 18.51.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416523/a195c359-1cc9-15ec-730b-df14613310f8.png">

```
# 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
<img width="863" alt="スクリーンショット 2020-04-09 19.04.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416523/acd5c635-89e3-62a4-83c4-998e0e16a302.png">


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

```
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
<img width="827" alt="スクリーンショット 2020-04-10 12.46.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416523/3c4a0737-feaf-3a08-cdb5-1e9642489e5c.png">

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

```
<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のバージョンの下げ方です。

初期設定では、以下のように近いバージョンの２種類しか選べません。
<img width="545" alt="スクリーンショット 2020-04-10 13.24.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416523/fa808fe5-005f-7d23-ff22-e988d3e11775.png">

この選択肢を変更するには、Applications > MAMP > bin > php のフォルダ内の各バージョンphpフォルダの名前を変更します。
表示させたいバージョン以外にアンダースコアをつけておきます。
<img width="630" alt="スクリーンショット 2020-04-10 13.23.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416523/0c6167d7-e669-16fd-7599-5ae0780778eb.png">

ここまで設定したら、MAMPを再起動します。
その後、もう一度MAMPを立ち上げ、上部のメニューバーより MAMP > PreferencesからPHPのタブを開くと
<img width="547" alt="スクリーンショット 2020-04-10 13.25.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416523/a3cc568c-6b31-4cb1-82e5-a631b69f3956.png">
このように選択肢が変わっているはずです。


# 引用・参考
[MAMPでMacのローカル環境にSSL（https://localhost）を設定する方法](https://parashuto.com/rriver/tools/https-localhost-ssl-with-mac-mamp)