之前都在用 StartSSL 的免費 certificate,雖知道有 Let’s Encrypt,但因手邊幾乎都轉用 nginx,遲遲沒下手。
約莫一週前 zeroplex 丟了這個網頁:「Why I stopped using StartSSL (Hint: it involves a Chinese company)」,三、四天前 DK 大神也撰文提及,就決定趁週末沒什麼事來動工…
用 DK 大神在一個月前撰文提過的 dehydrated 這個 GitHub 專案可以輕鬆搞定,步驟大致如下…
- 找個自己喜歡的目錄(不是 /tmp …),把 dehydrated clone 出來
- 在 clone 出來的目錄之下建立 .acme-challenges 目錄
mkdir dehydrated/.acme-challenges
- 在原本的 HTTP (80 port) 設定下建立 alias,把網站的 /.well-known/acme-challenge 指向剛建立好的目錄
- 讓 HTTP daemon 重讀設定
- 執行這個指令
dehydrated/dehydrated -c -d {網站hostname}
- 完成 & 成功後就會在 dehydrated/certs 發現目錄,目錄下有數個檔案
- 我自己讓 nginx 使用 fullchain.pem 跟 privkey.pem,設定大致如下:
server { listen 443 ssl http2; listen [::]:443 ssl http2; ssl on; ssl_certificate /SOMEWHERE/dehydrated/certs/{網站hostname}/fullchain.pem; ssl_certificate_key /SOMEWHERE/dehydrated/certs/{網站hostname}/privkey.pem; ssl_trusted_certificate /SOMEWHERE/dehydrated/certs/{網站hostname}/fullchain.pem; .... }
我記得 Let’s Encrypt 的 certificate 要在 90 天內 renew,所以 cron job 這樣放:
0 0 1 */2 * /SOMEWHERE/dehydrated/letsencrypt.sh -c -d {網站hostname} > /dev/null 2>&1
Updated : letsencrypt.sh 改為 dehydrated 。