作者: 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 已啟用
- 打開瀏覽器,輸入
https://example.com
。 - 若地址欄顯示為 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
常見問題
- 防火牆問題:確保防火牆開啟 80(HTTP)和 443(HTTPS)端口,以便 Certbot 驗證和用戶訪問。
- 憑證更新失敗:檢查域名解析、Nginx 配置和防火牆設置是否正確。
這樣,HTTPS 憑證的申請與配置就完成了。透過 Certbot,自動化管理讓憑證更新更加方便。