/ SSL

Let's Encrypt Beta 封測

前一陣子 Let's Encrypt 開放 Beta 申請,身為一個專業的農夫,申請幾個來加密農田好像也挺合理的。


所以我申請了三組(欸

設定的方式很簡單,他的文件裡面也有詳細的說明,基本上就是一行指令就搞定了。

麻煩的地方在於,你的伺服器上,如果有服務佔用 80 埠的話,必須要先把服務停掉。因為他會使用 80 來測試一些東西,所以在安裝之前必須要暫停一下子。

官方文件有講的就不多做解釋了,這裡快速帶過,

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly -t -d hinachen.me -m [email protected] --renew-by-default --agree-tos --agree-dev-preview

三行就結束了,如果你的 80 埠被佔用的話,例如說 Nginx,會出現這樣的錯誤訊息,

-------------------------------------------------------------------------------
The program nginx (process ID 26925) is already listening on TCP port 80. This
will prevent us from binding to that port. Please stop the nginx program
temporarily and then try again.
-------------------------------------------------------------------------------

如果成功的話,會出現像這樣的訊息,

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/hinachen.me/fullchain.pem. Your cert will
   expire on 2016-02-03. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.

注意,他有提及,基本上你的憑證有效期限只有 90 天,所以,在憑證過期之前,要在次執行一次剛剛的指令,讓他重新產生一個新的憑證。換句話說,就是每次產生的憑證,效力都是 90 天。產生出來的檔案會放在 /etc/letsencrypt 底下,需要檔案路徑的人可以去那邊找找。

換句話說,你就是把這樣的步驟做成 shell script 然後放到 CRONTAB 去跑,

  1. 停掉任何佔用 80 埠的服務。
  2. ./letsencrypt-auto certonly -t -d hinachen.me -m [email protected] --renew-by-default --agree-tos --agree-dev-preview
  3. 重新啟動 80 埠的服務,如果跟 SSL 相關的服務也必須要重新啟動。

其中,hinachen.me[email protected] 請不要照抄,謝謝。

發下來的憑證長這個樣子,

SSL in Browser

另外,如果你重複執行產生憑證的動作,第二次之後會出現這個,

SSL Failed!

這是正常的,因為 Let's Encrypt 目前還沒有正式對外開放,所以你拿兩次以上都會收到這樣的 CA,測試是會通過的,只是瀏覽器不認得他而已。如果你不小心跑了兩次以上的產生憑證的動作,可以到 /etc/letsencrypt/archive 裡面去找,應該會有,例如說,

$ cd /etc/lesencrypt/archive/caline.me
$ ls
cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem  cert2.pem  chain2.pem  fullchain2.pem  privkey2.pem
$

然後你到 /etc/lesencrypt/live/caline.me

$ cd /etc/lesencrypt/live/caline.me
$ ls -la
hinablue# ls -la
total 8
drwxr-xr-x 2 root root 4096 Nov  5 13:08 .
drwx------ 5 root root 4096 Nov  5 11:11 ..
lrwxrwxrwx 1 root root   33 Nov  5 13:08 cert.pem -> ../../archive/caline.me/cert2.pem
lrwxrwxrwx 1 root root   34 Nov  5 13:08 chain.pem -> ../../archive/caline.me/chain2.pem
lrwxrwxrwx 1 root root   38 Nov  5 13:08 fullchain.pem -> ../../archive/caline.me/fullchain2.pem
lrwxrwxrwx 1 root root   36 Nov  5 13:08 privkey.pem -> ../../archive/caline.me/privkey2.pem
$

live 裡面的砍掉,重新連結到 *1.pem 的檔案,重新啟動 SSL 相關服務就可以了。