作者: Hao

最後編輯日期: 2024-10-25

申請 HTTPS 的完整教學

HTTPS 能加密用戶和伺服器之間的數據傳輸,讓網站更安全。以下是申請並配置 HTTPS 憑證的步驟教學。


第 1 步:選擇憑證頒發機構(CA)

常見的憑證頒發機構包括:

  • Let’s Encrypt(免費且自動化)
  • DigiCert
  • GlobalSign

推薦使用 Let’s Encrypt,因為它免費而且可以自動化!!


第 2 步:安裝 Certbot

Certbot 是 Let’s Encrypt 推出的工具,能自動申請和更新憑證。下面是安裝指令,依據你的操作系統選擇相應的方式:

Ubuntu 系統

sudo apt update
sudo apt install certbot python3-certbot-nginx

CentOS 系統

sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx

第 3 步:使用 Certbot 申請 HTTPS 憑證

輸入下面的指令,Certbot 會自動幫你申請憑證並配置 Nginx 支持 HTTPS:

sudo certbot --nginx -d example.com -d www.example.com
  • -d:指定你的域名,可以添加多個(例如 -d example.com -d www.example.com)。
  • 過程中,Certbot 會讓你輸入電子郵件(接收憑證過期提醒)並同意服務條款。

第 4 步:確認 HTTPS 已啟用

  1. 打開瀏覽器,輸入 https://example.com
  2. 若地址欄顯示為 HTTPS 且沒有警告,表示 HTTPS 成功啟用。

第 5 步:設定自動更新(可選)

Let’s Encrypt 的憑證有效期為 90 天,你可以設置自動更新,避免過期。

手動測試自動更新

使用以下指令來測試更新流程是否正常運行:

sudo certbot renew --dry-run

設置自動更新計劃任務

使用以下指令開啟 crontab 編輯器,加入自動更新任務:

sudo crontab -e

在 crontab 中新增以下行,每天凌晨 2 點自動檢查和更新憑證:

0 2 * * * /usr/bin/certbot renew --quiet

Nginx 的 HTTPS 配置範例

Certbot 通常會自動配置 Nginx。如果你需要手動配置,參考以下範例:

server {
    listen 80;
    server_name example.com www.example.com;
    # 重定向 HTTP 到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        root /var/www/html;
        index index.html;
    }
}

憑證管理指令

  • 查看憑證狀態:檢查 Certbot 已安裝的憑證列表

    sudo certbot certificates
    
  • 手動更新憑證

    sudo certbot renew
    
  • 刪除憑證:如果不再使用某域名的憑證,可以刪除

    sudo certbot delete --cert-name example.com
    

常見問題

  1. 防火牆問題:確保防火牆開啟 80(HTTP)和 443(HTTPS)端口,以便 Certbot 驗證和用戶訪問。
  2. 憑證更新失敗:檢查域名解析、Nginx 配置和防火牆設置是否正確。

這樣,HTTPS 憑證的申請與配置就完成了。透過 Certbot,自動化管理讓憑證更新更加方便。