Let's Encrypt

原先我使用StartSSL的免費Certificate在我的web server上,後來因為此篇新聞的原因,導致我需要找新的方法。Let's Encrypt是Linux基金會託管項目,雖然每次證書只有三個月的效用,但可解我燃眉之急。

無法啟動httpd的問題

我參考了此篇教學。cerbot這隻程式將一切過程變得相當容易,首先下載cerbot:

mkdir /opt/cerbot
cd /opt/cerbot
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
接著就是使用管理權限執行cerbot,而我遇到的問題是驗證失敗,這是由於驗證伺服器無法連接到我伺服器而造成的。原因是httpd啟動失敗:

這是由於cerbot自動產生一個ssl設定到httpd/conf下,與原本的衝突導致的;於是我註解原本的ssl設定後,就可以正常啟動httpd。最後重新執行certbot,按照指示做重新啟動httpd即可獲得可信任的certificate。

由於它是3個月一簽,透過crontab去幫我們自動更新會比較方便,可以透過以下腳本進行更新:
#!/bin/bash
/opt/cerbot/cerbot-auto renew --quiet --no-self-upgrade --post-hook "service httpd reload"
在更新後,透過posthook去重新載入httpd設定。crontab設定方法可以參考此link

多個domain的問題

在完成上面步驟後,我發現www.tonylin.idv.tw可以正常使用,而tonylin.idv.tw不行。後來得知可以透過以下指令擴展domain名稱:

./certbot-auto -d www.tonylin.idv.tw -d tonylin.idv.tw
在執行時,它會問你要擴展還是取代原本的,選擇擴展即可:

最後重新載入httpd即完成。