Certbot:幫你的網站安裝免費 HTTPS 憑證

操作許多 API 可能都要使用 HTTPS 憑證,例如 LINE Bot、Facebook API 的 WebHook 等等,而我們可以透過 Certbot 來建立免費的 HTTPS 憑證。

Certbot 其實是利用 Let's Encrypt 的免費 HTTPS 憑證,而 Let's Encrypt 是由 Mozilla、Cisco、Google 等大公司共同贊助推動的服務,主要是要推廣大家都來簽 HTTPS,讓網路更安全。

本文章使用 Ubuntu 18、Nginx 當範例。

安裝 Certbot

首先安裝 Certbot:

sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot

然後我們要在 Ubuntu 上安裝一個自動幫我們修改 Nginx 設定的套件,所以我們要再安裝這個:

sudo apt-get install python-certbot-nginx

執行 Certbot,取得憑證

首先執行這個指令:

sudo certbot --nginx

接著它會問你幾個問題,例如使用者信箱、同意條款、要不要蒐集匿名資料等等。然後因為我們用了這個 Nginx 套件,所以他會自動偵測到你已經設定的 Domain。如果你沒有設定,建議參考 這篇文章 設定 server_name

只要你看到 Congratulations! You have successfully enabled 等字眼,就代表你已經成功安裝 Nginx 的 HTTPS 憑證了。你可以手動打開 Nginx 設定檔,看看他動了什麼。

sudo nano /etc/nginx/sites-enabled/default

這樣就裝好 HTTPS 憑證了!透過正夯的 Let's Encrypt 來使用。然而 Let's Encrypt 的憑證一次只能用三個月,我們要讓他每個月都去更新一次憑證的話,就要借用 crontab 這個工具來設定排程。

Crontab 設定自動更新憑證

你可以使用這個指令來更新憑證:

sudo certbot renew

那如果你要修改 Crontab 的話,使用這個指令打開 Crontab 設定:

sudo crontab -e

在檔案的最下方加上:

0 0 1 * * certbot renew

前五個參數代表,0 分、0 秒、1 日、任何月、任何天(星期幾),也就是不管每個月的一號的 00:00 執行後面的指令。

存擋離開後就會自動套用這個設定了。這樣你就有可以一直使用的 HTTPS 憑證了!

本篇文章同步發表在 iT邦幫忙

延伸閱讀