如何安裝/更新SSL證書

以下步驟係基於在阿里雲VPS上部署更新的SSL憑證到Nginx伺服器的方法:

首先,你要在阿里雲上先購買證書,購買方法可在阿里雲的幫忙文件中找到(國內阿里雲提供有效期為三個月的個人測試版,但國際版阿里雲找不到免費的)。


1. 上傳憑證檔案到伺服器

  • 下載的憑證檔案:通常包含兩個檔案(例如 your_domain.pemyour_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;
}

常見問題排查

  1. 憑證路徑錯誤
  • 檢查Nginx錯誤日誌:tail -f /var/log/nginx/error.log
  • 確認檔案路徑和檔名完全匹配。
  1. 權限問題
  • 確保Nginx使用者(通常為 www-datanginx)有權限讀取憑證檔案。
  1. 中繼憑證缺失
  • 使用SSL檢測工具查看是否提示憑證鏈不完整。
  1. 防火牆/安全群組
  • 確認阿里雲安全群組開放了 443 連接埠。

自動化續期建議

未來可考慮使用 Certbotacme.sh 自動續期憑證,避免手動更新:

# 使用Certbot範例
sudo certbot --nginx -d your_domain.com

按照以上步驟操作後,SSL憑證應能正常生效。如果仍有問題,請檢查日誌或提供錯誤訊息進一步排查。

Leave a Reply