MAMPでssl対応する方法


sslの証明書(オレオレ証明書)を作成する

個人利用のsslの場合、特に今回のようなローカルのPCにMAMPなどでhttpサーバを立ち上げる場合などは、無料の自己証明書で十分です。ssl、自己証明書、オレオレ証明書などで検索すれば、たくさんのサイトが検索にかかります。ここでは作成に必要なコマンドのみをメモで残しておきます。
なお証明書は下記のフォルダに作成するものとします。

  • /Applications/MAMP/conf/ssl
cd /Applications/MAMP/conf/ssl
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt

cp server.key server.key.bak
openssl rsa -in server.key.bak -out server.key
  • 最初のserver.key作成時はいろいろと質問が表示されます。Common Nameの質問だけlocalhostを入力し、その他はデフォルト(Enter)でOKです。
  • 最後の2行は、証明書のパスフレーズを外すための処理です。ローカルのサーバなので、外しておいた方が便利でしょう。

設定ファイルを書き換える

下記の行を編集して、httpd-ssl.confが読み込まれるようにします。

/Applications/MAMP/conf/apache/httpd.conf
Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf

下記の行を編集して、作成した証明書を読み込むようにします。ポート番号も443に変えます。

/Applications/MAMP/conf/apache/httpd.conf
Listen 443
SSLCertificateFile "/Applications/MAMP/conf/ssl/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/ssl/server.key"

/etc/sudoersの編集

上記のssl証明書作成と、設定ファイルの変更だけではMAMPを開始することができません。これはポート番号443のサービスを開始するには管理者の権限が必要なためです。
MAMPの開始では下記のスクリプトが呼ばれています。

/Applications/MAMP/bin/startApache.sh
# /bin/sh
/Applications/MAMP/Library/bin/apachectl start

試しにこれを実行してみると、443のポートを使用するサービスを開始できないため、Permissionのエラーが表示されます。
そこで、上記のスクリプトで実行されている、apachectlをsudo付きで実行した場合にパスワードが入力不要にします。

※セキュリティの問題もありますので、十分に注意して自己責任でお願いします。

sudo visudo

username ALL=(ALL) ALL
username ALL=(ALL) NOPASSWD: /Applications/MAMP/library/bin/apachectl

  • /etc/sudoersを編集する場合は、必ずvisudoコマンドを使用します。
  • 上記の2行を追加します。usernameはMAMPを実行するユーザ名です。

スクリプトを書き換える

/Applications/MAMP/bin/startApache.sh
# /bin/sh
sudo /Applications/MAMP/Library/bin/apachectl start
/Applications/MAMP/bin/stopApache.sh
# /bin/sh
sudo /Applications/MAMP/Library/bin/apachectl stop 

上記2つのファイルにそれぞれsudoを追加します。