Enabling SSL on MAMP on OS X

Posted by – June 19, 2012

我習慣在本機上開發程式,做完初步測試後才會佈署到測試主機或正式主機。為此,有些要求使用 https 安全連線的頁面在本機就無法進入,所以才興起了在本機簽署一個憑證作為開發之用的念頭。因為步驟還蠻長的,做個筆記給未來的自己。

第一步:停止 MAMP 以及其他可能佔用 port 的應用程式

MAMP 預設是跑 8888 port,不過我的習慣是改到 80 port,SSL 需要 443 port,也要確定沒有被佔用到。

第二步:建立自己簽署的 SSL 憑證

通常為了開發和測試才會建立這種沒有經過第三方認證的憑證,如果是為了上線運作的網站,要向公正單位購買憑證。

同事推薦的憑證商是 rapidssl.com

產生私鑰

在 OS X Terminal 輸入以下指令,建議先用 pwd 看一下當前目錄。

openssl genrsa -des3 -out server.key 1024

輸入兩次密碼。

產生憑證需求檔 (Certiciate Signing Request, CSR)

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

輸入剛剛的密碼,打錯會產生不出對應的 CSR。
接下來會出現一連串問題,最重要的是 Common Name 這一項,必須跟你的域名對應。

Country Name (2 letter code) [AU]: TW
State or Province Name (full name) [Some-State]: Taiwan
Locality Name (eg, city) []: Taipei
Organization Name (eg, company) [Internet Widgits Pty Ltd]: [公司名稱]
Organizational Unit Name (eg, section) []: Development
Common Name (eg, YOUR name) []: dev.mywebsite.com
Email Address []: [Email]
A challenge password []:
An optional company name []:

(challenge password 可以留空)

產生憑證

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

輸入剛剛的密碼。

移除 server.key 的密碼

cp server.key server.tmp
openssl rsa -in server.tmp -out server.key

將憑證和私鑰移到 MAMP

cp server.crt /Applications/MAMP/conf/apache
cp server.key /Applications/MAMP/conf/apache

第三步:編輯 MAMP Apache 設定檔

這個步驟是啟用 MAMP 的 SSL 支援。這邊用的 MAMP 2.0.5 版,舊版路徑略有不同。
編輯 MAMP httpd.conf 檔案 (/Applications/MAMP/conf/apache/httpd.conf)

第536行左右,將 Include 前的井字號去除,井字號是註解的意思。

# Secure (SSL/TLS) connections
Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf

編輯 MAMP httpd-ssl.conf 檔案 (/Applications/MAMP/conf/apache/extra/httpd-ssl.conf)

第99行,去除井字號。

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

第108號,去除井字號。

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

如果有使用 VirtualHost 的話,可以在 httpd-vhosts.conf (/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf) 加上以下設定。

<VirtualHost dev.mywebsite.com:443>
DocumentRoot [網站目錄,通常是 /Applications/MAMP/htdocs/]
ServerName dev.mywebsite.com
SSLEngine on
SSLCertificateFile /Applications/MAMP/conf/apache/server.crt
SSLCertificateKeyFile /Applications/MAMP/conf/apache/server.key
</VirtualHost>

第四步,啟動 MAMP Apache

大工告成,現在可以測試 http://dev.mywebsite.com 和 https://dev.mywebsite.com 了。

References:

Leave a Reply

Your email address will not be published. Required fields are marked *