【筆記】Ubuntu 18.04 + Apache 使用 Snap 安裝 Certbot 並向 Let’s Encrypt 取得免費 SSL 憑證的方法

前言

之前我的網站一直都是使用 SSL For Free 來取得 SSL 憑證,雖然在 2020 年 SSL For Free 疑似是被 ZeroSSL 給買下來了,在註冊與安裝 SSL 憑證的方式基本上差不多。讓我沒有想到的是,這次在 renew 憑證的時候,竟然出現 “You have reached the maximum amount of 90-day certificates allowed on the Free Plan.” 的訊息。我仔細看了一下 ZeroSSL 的 Free Plan,才發現原來每 90-Day Certificates 前面竟然有個「3」(如下圖)。這代表 ZeroSSL 的免費計劃有三次的使用限制。這讓我不得不花時間來研究其他取得免費 SSL 憑證的方式。

ZeroSSL Free Plan 的 90-Day Certificates 只能使用三次

關於 Snap

Snap (Snappy) 是一套軟體部署與軟體套件管理系統,由 Canonical 開發於 Linux / Ununtu 上使用。Snap 使用容器來管理套件,套件與其依賴套件被綁定在一起,套件與套件彼此獨立,達到更加安全、獨立、易控的特性。但 Snap 最顯著的缺點就是會比 apt 占用了更多的硬碟空間。

注意:自 Ubuntu 16.04 開始 Snap 被預設安裝在系統中。

關於 Certbot

Certbot 是一個免費、開源的 ACME 客戶端軟體,他可以透過簡單的指令幫我們向 Let’s Encrypt 取得並安裝憑證,並提供每 60 天自動更新憑證的功能。Certbot 也是 Let’s Encrypt 官方推薦使用的 ACME 客戶端軟體。

關於 Let’s Encrypt

Let’s Encrypt 是一個免費、自動化、開放的憑證頒發機構,由 Mozilla、Cisco、Chrome、Facebook 等大廠所推動,其目的是建立一個更加安全、更尊重引私的網際網路世界。

以下正文開始。

一、安裝 Snap

若 Ubuntu 裡面沒有 snap,可以使用以下安裝指令:

$ sudo apt update
$ sudo apt install snapd

二、確認 Snap 版本是最新的

sudo snap install core; sudo snap refresh core

三、確認沒有任何舊版 Certbot 套件

如果在這之前有使用過任何 OS 套件管理工具例如 apt、dnf 或 yum,應該在使用 Snap 安裝 Certbot 之前將其移除,以確保你所下的 Certbot 指令是由 Snap 所安裝的 Certbot 所運行。

這些常見的移除指令像是:

$ sudo apt-get remove certbot
$ sudo dnf remove certbot
$ sudo yum remove certbot

四、安裝 Certbot

$ sudo snap install --classic certbot

五、確保 Certbot command 可用

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

六、執行 Certbot

以下請二擇一執行即可:

1. (最方便)若你需要讓 Certbot 自動把憑證相關設定寫入 web server 的 configuration:

$ sudo certbot --apache

2. 若你想要自己設定,僅需透過 Certbot 取得憑證的話:

$ sudo certbot certonly --apache

若你是 nginx,把 –apache 換成 –nginx 即可。

七、大功告成!

理論上 Certbot 能幫助你的地方到這邊就完全結束了。前面說到 Certbot 會每 60 天自動更新憑證,你可以執行以下指令來確認自動更新功能是否正常:

$ sudo certbot renew --dry-run

如果沒有任何錯誤,就代表自動更新功能是正常的。

參考文章

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments