以下步驟係基於在阿里雲VPS上部署更新的SSL憑證到Nginx伺服器的方法:
首先,你要在阿里雲上先購買證書,購買方法可在阿里雲的幫忙文件中找到(國內阿里雲提供有效期為三個月的個人測試版,但國際版阿里雲找不到免費的)。
1. 上傳憑證檔案到伺服器
- 下載的憑證檔案:通常包含兩個檔案(例如
your_domain.pem和your_domain.key)。 .pem檔案:憑證檔案(可能包含憑證鏈)。.key檔案:私鑰檔案。- 上傳方法:
- 使用
scp或 SFTP 工具(如 WinSCP、FileZilla)將檔案上傳到伺服器,建議存放在/etc/nginx/ssl/目錄下(若目錄不存在請先建立):bash sudo mkdir -p /etc/nginx/ssl/ sudo chmod 700 /etc/nginx/ssl/
2. 確認憑證檔案權限
確保私鑰檔案權限安全,避免被未授權存取:
sudo chmod 600 /etc/nginx/ssl/your_domain.key # 私鑰僅允許root讀寫
sudo chmod 644 /etc/nginx/ssl/your_domain.pem # 憑證檔案允許讀取
3. 修改Nginx設定檔案
- 開啟你的Nginx網站設定檔案(通常位於
/etc/nginx/your_site/your_site.conf或/etc/nginx/conf.d/your_site.conf)。 - 找到SSL相關的設定部分,替換舊憑證路徑為新憑證路徑:
- 如果不清楚設定檔位置,可以輸入
sudo nginx -t # 查看設定檔執行情況及所在路徑
server {
listen 443 ssl;
server_name your_domain.com;
# 更新以下兩行路徑
ssl_certificate /etc/nginx/ssl/your_domain.pem;
ssl_certificate_key /etc/nginx/ssl/your_domain.key;
# 其他設定(如SSL參數、root目錄等)保持不變
...
}
如果採用virtual hosting,上述SSL設定檔中的 server {...} 部分有可能存放在另一個目錄的檔案中,可在主設定檔文中搜索包含 include....your_domain_name.conf 的內容,再到相關目錄進行修改。
4. 檢查憑證鏈完整性(重要!)
- 如果憑證檔案未包含中繼憑證(Intermediate CA),需手動合併:
# 將網域憑證與中繼憑證合併(順序:網域憑證 → 中繼憑證)
cat your_domain.pem intermediate.pem > combined.pem
- 然後在Nginx設定中使用合併後的檔案:
ssl_certificate /etc/nginx/ssl/combined.pem;
5. 測試Nginx設定
執行以下指令檢查設定語法是否正確:
sudo nginx -t
- 成功輸出:
nginx: configuration file /etc/nginx/nginx.conf test is successful
6. 重新載入Nginx服務
套用新設定:
sudo systemctl reload nginx # 或使用 sudo service nginx reload
7. 驗證SSL憑證生效
- 方法1:瀏覽器存取
https://your_domain.com,檢查網址列鎖頭標誌是否正常。 - 方法2:使用線上工具檢測:
- SSL Labs SSL Test
- Why No Padlock?
8. 強制HTTP跳轉HTTPS(可選)
確保HTTP請求自動跳轉到HTTPS(如果尚未設定):
server {
listen 80;
server_name your_domain.com;
return 301 https://$host$request_uri;
}
常見問題排查
- 憑證路徑錯誤:
- 檢查Nginx錯誤日誌:
tail -f /var/log/nginx/error.log - 確認檔案路徑和檔名完全匹配。
- 權限問題:
- 確保Nginx使用者(通常為
www-data或nginx)有權限讀取憑證檔案。
- 中繼憑證缺失:
- 使用SSL檢測工具查看是否提示憑證鏈不完整。
- 防火牆/安全群組:
- 確認阿里雲安全群組開放了
443連接埠。
自動化續期建議
未來可考慮使用 Certbot 或 acme.sh 自動續期憑證,避免手動更新:
# 使用Certbot範例
sudo certbot --nginx -d your_domain.com
按照以上步驟操作後,SSL憑證應能正常生效。如果仍有問題,請檢查日誌或提供錯誤訊息進一步排查。