Ubuntu Nginx SSL證書更新指南(以Let’s Encrypt為例)
Let’s Encrypt證書有效期為90天,Certbot(Let’s Encrypt官方工具)會自動配置定時任務處理續期,無需手動干預。若需確認或調整自動續期設置,可按以下步驟操作:
運行以下命令模擬續期過程,確保配置正確(無報錯則表示正常):
sudo certbot renew --dry-run
Certbot默認會創建系統級定時任務(通常位于/etc/cron.d/certbot
或通過systemd timer管理)??赏ㄟ^以下命令查看定時任務詳情:
cat /etc/cron.d/certbot # 查看cron任務
systemctl list-timers | grep certbot # 查看systemd定時任務
默認情況下,Certbot會每小時檢查一次證書有效期,若證書剩余有效期不足30天,則自動觸發續期。
若需立即續期(如證書即將過期),可直接運行:
sudo certbot renew
續期完成后,Certbot會自動重新加載Nginx配置(無需手動執行systemctl reload nginx
)。
若證書未通過Certbot管理(如自行上傳證書),需手動替換證書文件并更新Nginx配置:
從證書頒發機構(CA)獲取新證書(通常為.crt
/.pem
格式的主證書和.key
格式的私鑰),并上傳至服務器安全目錄(如/etc/nginx/ssl/
):
sudo scp new_cert.crt new_private.key user@your_server:/etc/nginx/ssl/
替換前務必備份舊證書及私鑰(避免操作失誤導致服務中斷):
sudo cp /etc/nginx/ssl/old_cert.crt /etc/nginx/ssl/old_cert.crt.bak
sudo cp /etc/nginx/ssl/old_private.key /etc/nginx/ssl/old_private.key.bak
將新證書文件移動至Nginx配置指定的路徑(如/etc/nginx/ssl/yourdomain.com.crt
和/etc/nginx/ssl/yourdomain.com.key
):
sudo mv /etc/nginx/ssl/new_cert.crt /etc/nginx/ssl/yourdomain.com.crt
sudo mv /etc/nginx/ssl/new_private.key /etc/nginx/ssl/yourdomain.com.key
編輯Nginx站點配置文件(通常位于/etc/nginx/sites-available/yourdomain.com
或/etc/nginx/conf.d/yourdomain.conf
),更新ssl_certificate
(主證書路徑)和ssl_certificate_key
(私鑰路徑):
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/nginx/ssl/yourdomain.com.crt; # 新證書路徑
ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key; # 新私鑰路徑
# 其他SSL配置(如協議、加密套件)保持不變
include /etc/nginx/options-ssl-nginx.conf;
ssl_dhparam /etc/nginx/ssl-dhparams.pem;
# ...
}
運行以下命令驗證Nginx配置是否正確(無error
則表示通過):
sudo nginx -t
若配置測試通過,平滑重啟Nginx以應用新證書(避免服務中斷):
sudo systemctl reload nginx
600
(僅root可讀),主證書文件設置為644
:sudo chmod 600 /etc/nginx/ssl/*.key
sudo chmod 644 /etc/nginx/ssl/*.crt
sudo chown root:root /etc/nginx/ssl/*.key
cat your_cert.crt intermediate.crt > fullchain.pem
),并在Nginx配置中引用fullchain.pem
。sudo cp /etc/nginx/ssl/old_cert.crt.bak /etc/nginx/ssl/yourdomain.com.crt
sudo cp /etc/nginx/ssl/old_private.key.bak /etc/nginx/ssl/yourdomain.com.key
sudo systemctl reload nginx
通過以上步驟,可完成Ubuntu Nginx SSL證書的更新(自動/手動),確保網站始終保持安全的HTTPS連接。