Ubuntu 使用 certbot 安裝免費 SSL 憑證(Nginx)

筆者本來使用 ovh 的 vps 用的好好的,但是被自動調漲價格,申訴也不退費,於是筆者就轉去使用 Azure 的 VPS 了。
剛安裝好 Nginx 並綁定好網域,可以使用網域名稱 SSH 進 Linux ,但是無法使用網域名稱瀏覽網頁,使用 curl 指令查看發現會被自動導向 https:
    
curl http://ruyut.app
<html>
    <head><title>301 Moved Permanently</title></head>
    <body>
        <center><h1>301 Moved Permanently</h1></center>
        <hr><center>nginx/1.18.0 (Ubuntu)</center>
    </body>
</html>
    

使用指令查看 linux 的 443 port 發現沒有被監聽:
    
sudo ss -tuln | grep :443
    

這是因為在 Nginx 中預設是沒有開啟 443 port 的,因為沒有 SSL 憑證。所以解決方式也很簡單,申請 SSL 憑證並在 Nginx 中啟用 443 port 。
而免費的 SSL 憑證大多時間都很短,每隔幾個月就要手動換一次很麻煩,我們可以使用 certbot 這個免費工具,可以很簡單的自動產生憑證並且上到 Nginx 中。

安裝 certbot

在 Ubuntu 中有內建 snap ,透過 snap 安裝 certbot:
    
sudo snap install --classic certbot
    

建立 certbot 指令連結
    
sudo ln -s /snap/bin/certbot /usr/bin/certbot
    

取得 SSL 憑證並自動設定 nginx
    
sudo certbot --nginx
    

之後依序需要填入:
  1. 緊急聯絡 email
  2. 是否同意條款
  3. 是否同意分享 email
  4. SSL 憑證簽署的網域名稱

然後就設定完畢了,使用 https 連線也可以查看網頁了!

憑證過期與續訂

上面的圖片內有寫到 2024-08-21 會過期,在這之前需要重新簽發憑證。不過也有寫說已經順便幫你建立定時任務,它每天都會自動產生一次,我們可以使用下面的指令查看定時任務:
    
sudo systemctl list-timers
NEXT                        LEFT         LAST                        PASSED       UNIT                           ACTIVATES
Thu 2024-05-23 19:10:00 UTC 4h 8min left n/a                         n/a          snap.certbot.renew.timer       snap.certbot.renew.service
    



參考資料:
Certbot Instructions

留言