MAMPでオレオレ証明書を使ってローカルhttps通信(Windows版)
概要など
- Windows版 MAMPで https接続のローカルサーバーを立ち上げる
- OenSSLを使った自己証明書作成・適用方法 + Apache設定方法(.conf) の2本立て
- 執筆時環境 : MAMP Version: 5.0.6 (7029) x64
XAMPPで立ち上げたローカルサーバーとSSL通信をしたい。オレオレ証明書で
↑ 昔、XAMPPで似た記事を書いていましたが、今回新しく記事で残す事にしました。
やっぱり幾分勝手が違いますね~
本例で扱う仮想ホストはこちら
https://hoge.fuga/
https://ホニャララ.hoge.fuga/
( http:// 側は今回触れません = 非対応 )

1. MAMP 導入
https://www.mamp.info/ より Windows版をDL ( サイト含めて、日本語非対応っぽい )
コンポーネントバージョンは リリースノート で確認
インストール時のオプション
PRO版は使わないので、インストールオプションは下だけチェックONでやりました。
( でも Apple Bonjour が何なのか良くわかっていない。 ってかコレも無くて良いかも…? )
☐ MAMP PRO- ☑ Install Apple Bonjour (used for MAMP Viewer)
ファイアーウォール解除
MAMPの初期起動で Windows 側からFW許可訊ねられたと記憶しています。
プライベートネットワークのみチェック入れて許可
2. hosts ファイル編集
C:\Windows\System32\drivers\etc\hosts を編集
127.0.0.1 hoge.fuga を、末尾辺りにでも追記しておく
3. OpenSSL での自己証明書作成
3-1. 作業用フォルダ作成
C:\MAMP\bin\apache\conf\ 配下に \keys\ フォルダを作成しておく。
作業フォルダを兼ねつつも、本例ではココを(永続的に)証明書ファイル置き場として使います。
3-2. extension v3 ファイル用意
下記を C:\MAMP\bin\apache\conf\keys\my_ext.txt として保存。
DNS.* = 対応の仮想ドメイン(ホスト名) は、適宜弄ってください
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName=@alt_names
[alt_names]
DNS.1 = hoge.fuga
DNS.2 = *.hoge.fuga
3-3. 一時的な環境変数の調整 + OpenSSL 起動
-
コマンドプロンプト起動後
cd C:\MAMP\bin\apache\conf\keys\で作業用フォルダへ移動 -
移動後、環境変数を(一時的に)セット
set OPENSSL_CONF=C:\MAMP\bin\apache\conf\openssl.cnf -
c:\MAMP\bin\apache\bin\openssl.exeで openssl 起動。
-
💡 補足
2の部分を行わないと、 openssl 起動時に以下のエラー文言が出るかも。WARNING: can't open config file: /usr/local/ssl/openssl.cnf
原因は、内部項目 "OPENSSLDIR" 値が
"/usr/local/ssl"固定となっている為、
適切なpathでopenssl.cnfが読み込めない事にある。この "OPENSSLDIR" 値を弄る方法を探したが、ビルド段階等のタイミングでしか無理っぽい?
( ※ https://docs.openssl.org/3.1/man1/openssl-version/#options の-d参照 )
変更は諦めて 別アプローチで 環境変数OPENSSL_CONF側から弄って解決
3-4. 証明書作成
openssl 起動中、下記コマンドを順に打って自己証明書の作成を進める。
※ 1 と 2 の段階で Enter pass phrase for my.key: の文言と共に、計3回パス入力を促される筈
genrsa -aes128 -out my.key 2048rsa -in my.key -out my_nopass.keyreq -new -key my_nopass.key -sha256 -out my.csr -subj "/C=JP/CN=OreOre CA/O=team oreore"
( ※/CN=OreOre CA,/O=team oreoreあたりは自身の裁量で適宜変えて下さい )x509 -req -in my.csr -signkey my_nopass.key -sha256 -days 18250 -out my.crt -extfile my_ext.txt
( ※-days 18250で約50年ほどの有効期限にしています )
全て終えると C:\MAMP\bin\apache\conf\keys\ に各ファイルが出力される

4. Apache conf ファイル編集・調整
4-1. httpd.conf 追記
MAMPのApacheでは C:\MAMP\conf\apache\httpd.conf が使われているので、その中で
Include conf/extra/httpd-ssl.conf
と追記しておく。
感覚的には (執筆時環境だと) 610行目付近が収まり良さそう…なんとなく。
そうすると更に C:\MAMP\bin\apache\conf\extra\httpd-ssl.conf も使われるようになる。
- 💡 流れをまとめると以下 ( ややこしい )
MAMP経由で起動されたApacheではC:\MAMP\conf\apache\httpd.confが使われ、
それにより Apache の Server Root はC:/MAMP/bin/apacheとなる。
C:\MAMP\bin\apacheにとって、Include conf/extra/httpd-ssl.conf表記は、
C:\MAMP\bin\apache\conf\extra\httpd-ssl.confとなるので、その設定も使われるようになる
※ 同じ名前の .conf が、path の微妙に異なる階層に複数配置されているので混乱しがち…ご注意を。
4-2. httpd-ssl.conf 修正,書換
このままMAMPを起動してもApache側でエラーとなるので、原因となるPath周りを修正します。
( 一応、編集前にファイルのバックアップ取っておいても良いかも )
C:\MAMP\bin\apache\conf\extra\httpd-ssl.conf を開き、以下を編集
( diff 形式で表現しています )
# 124行目~付近
- DocumentRoot "/Apache24/htdocs"
- ServerName www.example.com:443
- ErrorLog "/Apache24/logs/error.log"
- TransferLog "/Apache24/logs/access.log"
+ DocumentRoot "C:\MAMP\htdocs"
+ ServerName hoge.fuga:443
+ ErrorLog "C:\logs\error.log"
+ TransferLog "C:\logs/access.log"
# 144行目付近
- SSLCertificateFile "/Apache24/conf/server.crt"
+ SSLCertificateFile "conf/keys/my.crt"
# 154行目付近
- SSLCertificateKeyFile "/Apache24/conf/server.key"
+ SSLCertificateKeyFile "conf/keys/my_nopass.key"
ServerName の部分は違ってても、なんならコメントアウトしててもOKぽい。
ただ、SSLCertificateFile , SSLCertificateKeyFile には 有効なものを指定してあげないと正常に起動しないので注意。
今回はデフォルトの ssl サーバー起動時に 本例の自己証明書を読み込ませる事で、この2項目をやり過ごした
-
💡 余談
今後、別の仮想ホストに対応させたくなったら、以下のセクションを
C:\MAMP\bin\apache\conf\extra\httpd-ssl.confの末尾辺りに追記増築すればOK
何ならDocumentRoot先を変えて、別サイトの構築も可能▼ ざっくり追記用の中身。 このくらい簡略化してても良いと思う
( ホスト名や証明書ファイルパスなどは適宜変えて下さい )# ▼ホスト名 <VirtualHost hoge.fuga:443> DocumentRoot "C:/mamp/htdocs/" # ▼ホスト名 ServerName hoge.fuga:443 SSLEngine on # ▼証明書を配置した位置 SSLCertificateFile "conf/keys/my.crt" # ▼平文の秘密鍵を配置した位置 SSLCertificateKeyFile "conf/keys/my_nopass.key" <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "C:/mamp/cgi-bin"> SSLOptions +StdEnvVars </Directory> </VirtualHost>
4-3. .conf の文法チェック
下記コマンドでチェック ( 参考 : Apache - Options )
C:\MAMP\bin\apache\bin\httpd.exe -f C:\MAMP\conf\apache\httpd.conf -t
手順 4-1 の Include conf/extra/httpd-ssl.conf が有効になっていれば、
そちらも紐づけ判定となり、一緒にチェックされる。便利!
露骨なエラーがなく Syntax OK と出れば多分OK 👌
- 💡 補足
-tオプションで設定ファイルの文法・構文が検証できるものの、
そのままでは MAMPが使わない方のconf/httpd.confを参照してしまう。
この為、-fオプションも併用し、参照先を明示しておく必要がある
×C:\MAMP\bin\apache\conf\httpd.conf( デフォルト参照先 )
○C:\MAMP\conf\apache\httpd.conf( MAMPが使うのはこれ )
5. 自己証明書をインストール
C:\MAMP\bin\apache\conf\keys\に書き出されたmy.crtを実行して開く- 「証明書のインストール」を押す
- 保存場所 「現在のユーザー」 のまま 「次へ」
- 「証明書をすべて次のストアに配置する」 を選択のち 「参照」 を押す
- 上から2番目、 「信頼されたルート証明機関」 を選択し 「OK」 ⇒ 「次へ」
- 「完了」 を押し、インポートされればOK
- 最後に ブラウザを再起動 して、証明書を反映させる
💡 補足 - 後々削除したい場合
chrome://certificate-manager/localcertsを開く- 「Windows からインポートした証明書を管理する」を開く
- 「信頼されたルート証明機関」タブに切り替え
- 発行元の名前が、証明書作成手順 (3-4.) にて
/CN=で指定したものと一致する証明書を探す
( ※ 本例ならOreOre CA) - 当該証明書を選択した状態で、下の削除ボタンを押し進めて削除
- ブラウザ再起動
6. 接続確認
MAMP 起動 & 内部サーバーも立ち上がってる状態で、
https://hoge.fuga/ にアクセスし、MAMPのindexページが出てきたら成功

おまけ / データベース確認
- MAMPアプリウィンドウ側の
Open WebStart pageまたはhttp://localhost/MAMP/(等)にアクセスする
本例ならhttps://hoge.fuga/MAMP/でもつながる。 - ページ上部「TOOLS」⇒「PHPMYADMIN」
( 初回アクセスはDB構築の為か、少し待たされた )
phpMyAdmin ログイン方法を変更する
執筆時環境では \phpMyAdmin5\ が使われており、ログインなしで管理画面が開ける模様。
認証アリにしたいので
C:\MAMP\bin\phpMyAdmin5\config.inc.php を編集し、
auth_type を config から cookie へと変更
( 参考 : docs.phpmyadmin.net > $cfg['Servers'][$i]['auth_type'] )
/* Authentication type */
- $cfg['Servers'][$i]['auth_type'] = 'config';
+ $cfg['Servers'][$i]['auth_type'] = 'cookie';
最初はちょっと躓いたものの、MAMP再起動 & MAMP側から phpMyAdmin 開いたりしてると、
無事ログイン画面が表示されるようになった。
とはいえ初期状態が user=root & pass=root のガバ仕様なので、そこも適宜変更しておく。
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = 'root'; // MySQL password
・・・まぁ、ローカルサーバーなんでそのままでも良いっちゃ良いんですけど
MAMP アンインストール時メモ
アインインストール後も C:\MAMP\ フォルダ(とその一部配下)は残る ので、
最終的には、それらも手動で消しておくと良い。
自己証明書系は使い捨てで良いと思うけど、諸々のバックアップは自身の判断で取ってください。
( データベースとか )

Do you also want to remove all settings and databases?
This operation is not reversible.全設定・データベースを削除する? 元に戻せないよ?
Are you completly sure that you want to delete all settings and databases?
Please first backup all your settings and databases.
Operation is not reversible.マジで全部バックアップしないの? この操作戻せないけど、ホンマに消してOK?
MAMP & MAMP PRO wan successfully removed from your computer.
アンインスコ完了したぽよ
