個人用の備忘録で、雑な記事です。
ちょっと特殊な環境だからあんまり参考にしない方が無難。
wordpressをよく実装するんだけど、http://localhost:8999をspでwifi経由で確認しようとしたら、リンク切れになっちゃうんだよね。だから、https://seisei.local:8999/みたいな接続方法になってる。
詳しくはこちら
wordpressの場合は、設定>一般>WordPress アドレス (URL)って箇所がlocalhostのurlとかになってても駄目
# NG (WordPress アドレス (URL))
http://localhost:8999
https://localhost:8999
http://seisei.local:8999
# OK
https://seisei.local:8999
前提1:既にMAMPで複数のサイトを使ってる前提の記事です。そして、それをSSL化したい人向けの記事。
前提2:http://localhost:8999 を普段は使わず、コンピュータ名+local+portの http://seisei.local:8999/ で開発してる状態。
まずは『http://seisei.local:8999/』を『https://seisei.local:8999/』にする
そのための手順は以下。
Homebrewでmkcertのインストール
mkcertはローカル開発環境でのSSL証明書を簡単に生成するための便利なツール
$ brew install mkcert
#って打ったら
Created a new local CA 💥
Sudo password:
The local CA is now installed in the system trust store! ⚡️
Warning: "certutil" is not available, so the CA can't be automatically installed in Firefox! ⚠️
Install "certutil" with "brew install nss" and re-run "mkcert -install"
#ってなった。
#Firefoxでは独自の証明書ストアを使うため、システムの信頼ストアとは別に設定が必要とのことHomebrewでcertutilをインストール(Firefoxを使う場合)
$ brew install nssこれでFirefoxの証明書ストアにもローカルCAが登録する準備が整った
$ mkcert -installもう一度、上記コマンドを叩いて、mkcert準備完了。
SSL証明書の生成
$ mkcert -key-file /Users/seisei/ssl/seisei.local-key.pem -cert-file /Users/seisei/ssl/seisei.local.pem "seisei.local" "localhost" "127.0.0.1" "::1"
# seisei.local:8999専用のSSL証明書を作成
# 以下表示されたら成功
Created a new certificate valid for the following names 📜
- "seisei.local"
- "localhost"
- "127.0.0.1"
- "::1"
The certificate is at "/Users/seisei/ssl/seisei.local.pem" and the key at "/Users/seisei/ssl/seisei.local-key.pem" ✅
It will expire on 13 April 2027 🗓/Applications/MAMP/conf/apache/httpd.conf
Listen 8999
# ポート追加/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
<VirtualHost *:8999>
DocumentRoot "/Applications/MAMP/htdocs/999_JAVREV"
ServerName seisei.local
SSLEngine on
SSLCertificateFile "/Users/seisei/ssl/seisei.local.pem"
SSLCertificateKeyFile "/Users/seisei/ssl/seisei.local-key.pem"
<Directory "/Applications/MAMP/htdocs/999_JAVREV">
Require all granted
</Directory>
</VirtualHost>以下のコマンドでApacheを再起動
$ sudo /Applications/MAMP/Library/bin/apachectl restartこの時点で、
http://seisei.local:8999/にアクセスすると『Bad Request』と表示されて見られない。
代わりに、
https://seisei.local:8999/にアクセスすると無事表示される!
ってのが、期待する動作。
スマホの設定
現時点でhttps://seisei.local:8999/にスマホでアクセスすると、安全でないサイトって言われる。
『安全でない方法で接続』すると、一応、サイトは見られる状態。
これをsslが効いた安全な接続にしたい。
原因と対策
原因:ローカルCA証明書がスマホにインストールされていない
対応方法:スマホへのCA証明書のインストール
手順: スマホにローカルCA証明書をインストール
- CA証明書ファイルの確認
mkcert -CAROOTの結果/Users/seisei/Library/Application Support/mkcertに保存されています。- このディレクトリにある
rootCA.pemファイルを見つけてください。
- 証明書ファイルの転送
- 方法1: メールに添付してスマホに送信。
- 方法2: GoogleドライブやDropboxなどのクラウドストレージにアップロード。
- 方法3: スマホをUSBケーブルで接続し、ファイルを直接コピー。
- スマホへのインストール
- iPhone (iOS)
- ファイルを開き、「インストール」を選択します。
- 設定 > 一般 > プロファイル に移動し、証明書を信頼します。
- 設定 > 一般 > 情報 > 証明書信頼設定 に進み、「rootCA.pem」を信頼済みにします。
- Android
- 設定 > セキュリティ > 認証情報のインストール に進みます。
- ダウンロードした
rootCA.pemを選択します。 - 「VPNとアプリ」または「Wi-Fi」を選択してインストールします。
- iPhone (iOS)
- ブラウザのキャッシュクリア
- 設定からブラウザのキャッシュをクリアし、再度アクセスを試してください。
- 再確認
https://seisei.local:8999にアクセスし、「安全」表示がされることを確認します。
次にhttp://localhost:8122/をSSL化してみる
2つ目のSSLを作成します
さっきはseisei.local:8999 用でした。新たに localhost に対応した証明書を生成する必要があります。でもこの方法だとwordpressは駄目だね。
mkcert -key-file /Users/seisei/ssl/localhost-key.pem -cert-file /Users/seisei/ssl/localhost.pem "localhost" "127.0.0.1"# /Applications/MAMP/conf/apache/httpd.confに追記
Listen 8122
# /Applications/MAMP/conf/apache/extra/httpd-vhosts.confに追記
<VirtualHost *:8122>
DocumentRoot "/Applications/MAMP/htdocs/122_mount"
ServerName localhost
SSLEngine on
SSLCertificateFile "/Users/seisei/ssl/localhost.pem"
SSLCertificateKeyFile "/Users/seisei/ssl/localhost-key.pem"
<Directory "/Applications/MAMP/htdocs/122_mount">
Require all granted
</Directory>
</VirtualHost>あとはMAMP再起動で動作するはず。
SP版は、さっきと同じ手順でOK。
新たに、sss.local:8200とかdev.local:8777とか追加したかったら、同じ方法でlocalhost.pemとlocalhost-key.pemを追加す。
最後にhttp://localhost:8096/をSSL化してみる
localhostはさっき上述した箇所で追加済み。localhost.pemとlocalhost-key.pemは使い回せるから、単純に以下をコピペしてMAMP再起動でOK。
<VirtualHost *:8096>
DocumentRoot "/Applications/MAMP/htdocs/096_projectname"
ServerName localhost
SSLEngine on
SSLCertificateFile "/Users/seisei/ssl/localhost.pem"
SSLCertificateKeyFile "/Users/seisei/ssl/localhost-key.pem"
<Directory "/Applications/MAMP/htdocs/096_projectname">
Require all granted
</Directory>
</VirtualHost>
コメントを残す