2016年10月20日 星期四

在全新的 Apache 2.4 設定 HTTPS

在完成跟 GoDaddy 申請憑證之後,Godaddy 網站上可以取得兩個 CRT 檔
我這邊拿到的,一個是命名很像亂碼的 fe461f1ba212ab7.crt 檔案,另一個則是 gd_bundle-g2-g1.crt。
fe461f1ba212ab7.crt 這個檔案是 SSL Certificate File,而 gd_bundle-g2-g1.crt 則是 SSL Certificate Chain File
加上申請憑證前,我們需要自行先產生的金鑰,假設檔名是 my-private-key.key
總共有三個檔案,就可以完成 Apache 2.4 的 HTTPS 設定了。

    安裝 Apache2

    因為這裡假設是一個全新的 Apache 2.4,因此先在一個全新的 Ubuntu 14.04 上安裝 Apache 2.4。

    apt-get update && apt-get install -y apache2
    設定 Apache2 的 SSL

    首先先編輯 /etc/apache2/sites-available/default-ssl.conf 這個檔案,這是 Apache2 上預設的 SSL 網站的設定
    依序修改以下三個參數,把金鑰和憑證檔的位置寫上去(假設檔案都放在 /home/ubuntu 資料夾內)。

    SSLCertificateFile /home/ubuntu/fe461f1ba212ab7.crt
    SSLCertificateKeyFile /home/ubuntu/my-private-key.key
    …
    SSLCertificateChainFile /home/ubuntu/gd_bundle-g2-g1.crt
    

    接著要執行以下的指令啟用 Apache2 的 SSL。
    第一行是設定讓 Apache2 啟用並讀取 SSL 網站的設定
    第二行則是啟用 Apache2 的 SSL 模組,讓 Apache2 支援 SSL。

    ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled
    a2enmod ssl
    

    如果金鑰並沒有用密碼加密的話,到這步就已經設定完成了。

    設定金鑰的密碼

    如果金鑰是有密碼的話,需要適當設定密碼,讓 Apache2 有辦法正確解開金鑰。
    Apache2 預設的方法是把密碼寫在 /usr/share/apache2/ask-for-passphrase 這個檔案上
    但我比較傾向每次啟動 Apache2 時,直接詢問我,讓我手動輸入密碼。
    要達到這個目標,就要先去修改 /etc/apache2/mods-enabled/ssl.conf 這個檔案
    把原本有的 SSLPassPhraseDialog 那行改成這樣:

    #SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase
    SSLPassPhraseDialog builtin
    重新啟動 Apache2
    service apache2 restart
    參考資料
    1. Apache Requires SSL / Passphrase

    沒有留言: