幫網站掛上 HTTPS,使用 certbot 向 Let's Encrypt 申請憑證

程式技術 sharkHead 4週前 0

在之前的一篇文章中,介紹了什麼是 HTTPS
相信大家會從中了解為什麼現今網站都建議掛上 HTTPS

本篇文章要來介紹如何使用 Certbot 來向免費的憑證頒發機構 Let's Encrypt 申請憑證
在用這些憑證幫自己的網站掛上 HTTPS

本篇文章是在 Debian 上操作,網站建置是使用 LEMP 架構
在申請憑證前,必須先向域名註冊商(例如 GoDaddy)購買一個域名(Domain)

 

安裝 certbot


首先更新套件

sudo apt-get update

安裝軟體屬性套件。Certbot 的開發人員使用個人套件存檔 (PPA) 分發 Certbot
軟體屬性套件可讓您更有效率地使用 PPAs

sudo apt-get install software-properties-common

如果你是 Ubuntu 的用戶,請輸入下列指令
Debian 可以跳過此步驟

sudo apt-add-repository ppa:certbot/certbot -y

更新 apt 以包含新的儲存庫

sudo apt-get update -y

安裝 Certbot

sudo apt-get install certbot -y

 

向 Let's Encrypt 申請憑證


首先我們先設定環境變數,將環境變數 DOMAIN 設定成你購買的網域

DOMAIN=example.com

還有頂層網域的設定,例如 admin.example.com 或是 blog.example.com

WILDCARD=*.$DOMAIN

設定完畢可以打印出來試試看

echo $DOMAIN && echo $WILDCARD

啟動 Certbot,使用手動授權方法搭配 DNS 查問以驗證網域所有權
這會為您的頂層網域及其子網域請求萬用字元憑證

sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly

接下來會有一連串的提示,過程中輸入您的電子郵件地址,這會用於續約和安全性注意事項
閱讀 Let’s Encrypt 服務條款。如果您不同意,就無法取得 Let’s Encrypt 憑證

接下來 Certbot 會請你完成一個小測試,來驗證網域所有權在你

amazon-lightsail-ssh-lets-encrypt-text-records.png
先證明自己真的擁有該網域

主要是請你在子域名中設定 DNS TXT record,那什麼是 TXT record?
簡單來說,以上面的圖片為例

你需要在 _acme-challenge.example.com 這個子網域中
設定 TXT record 為 9vuaf232…BVkHWl1…

當你設定好這個 TXT record
Certbot 訪問 _acme-challenge.example.com 時就能取得上述兩個亂數字串
並確定這個網域的所有權在你身上

通常會給兩個 TXT record 請你設定,那麼要如何設定呢?
這就要到域名註冊商那邊進行設定,設定完畢可以至 DNS Text lookup 網站,確認 DNS 是否已傳播
 

amazon-lightsail-mxtoobox-text-record-lookup.png
查詢 DNS TXT record 是否已傳播
amazon-lightsail-mxtoobox-propagated-text-record-lookup.png
傳播成功!

確認 DNS TXT record 已傳播之後,就可以完成 Certbot 的申請流程,並取得憑證
申請的憑證會放在

/etc/letsencrypt/live/example.com/

接下來只要在 Nginx 中設定憑證之後,就可以順利的幫網站掛上 HTTPS 拉

 

參考資料
教學課程:在 中使用 Let's Encrypt SSL 憑證與 Nginx 執行個體Amazon Lightsail


Laravel 與 Python 菜雞工程師
喜愛研究程式相關技術
正在學習 TypeScript 與 Vue.js