[華語, cmn-Hant-TW]
之前在這篇提到了 Let’s Encrypt 的 SSL,用起來是很開心沒錯,不過因為官方的 client 是用 python 寫的,在 freebsd 下面得裝一大堆 py27-* 的套件 (當然,安裝 security/py-letsencrypt 時會自動一起被裝進去,不用手動一個一個裝) 才能用,然後申請的時候要把 apache/nginx 關掉放出 80 port,某種程度來講還蠻讓人困擾的,後來看到有人用 shell script 寫了一個比較沒那麼肥的 letsencrypt.sh,主要得另外安裝 curl 而已,也不用關掉 apache/nginx,看起來蠻理想的,而且也進 FreeBSD 的 ports 了 (security/letsencrypt.sh),抓來下用了一下感覺還不錯:
- 用 ports 安裝的話檔案預設會放在 /usr/local/etc/letsencrypt.sh 目錄下,然後因為預設的 $BASEDIR 不在這邊,所以建議手動建一個 config.sh 檔,裡面加上一行 BASEDIR=“/usr/local/etc/letsencrypt.sh“,這樣用起來比較順手
- 要申請的網址通通寫在 domains.txt 裡面,這個設計不錯,這台機器裡面申請了哪些認證一目了然,修改也很方便
- 所有申請下來的檔案都丟在 certs 下面,對照一下名字應該很快就能設定好了
- 不用關掉 apache/nginx 的意思就是申請時要透過正在聽 80 port 的網頁伺服器和 letsencrypt 溝通,這邊得自己改伺服器的設定,把 /.well-known/acme-challenge/ 網址 alias 到 /usr/local/etc/letsencrypt.sh/.acme-challenges/ 目錄,有用 virtualhost 的話可以參考這篇的設定讓所有 virtualhost 都能用 (有用到 mod_dav_svn 之類的話,要另外用 locationmatch 避開)
- 一切都設定好的話,只要執行 letsencrypt.sh -c 就可以了,renew 也是同一個指令,預設是有效期限 30 天以上的話就不會 renew,所以可以放心直接丟 cron 跑
應該會繼續用下去,主要是 domains.txt 實在是有方便到
update 2016-09-15
依照原作者的講法,因為 letsencrypt 商標問題,所以名字改成 dehydrated 了,相關的路徑跟設定都得配合更動