操作許多 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:
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
首先執行這個指令:
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 這個工具來設定排程。
你可以使用這個指令來更新憑證:
sudo certbot renew
那如果你要修改 Crontab 的話,使用這個指令打開 Crontab 設定:
sudo crontab -e
在檔案的最下方加上:
0 0 1 * * certbot renew
前五個參數代表,0 分、0 秒、1 日、任何月、任何天(星期幾),也就是不管每個月的一號的 00:00 執行後面的指令。
存擋離開後就會自動套用這個設定了。這樣你就有可以一直使用的 HTTPS 憑證了!
本篇文章同步發表在 Noob's Space。