跳至內容

如何在 Lightsail 執行個體上託管的 Bitnami 堆疊中續訂 Let's Encrypt SSL 憑證?

2 分的閱讀內容
0

在 Amazon Lightsail Bitnami 執行個體中為我的網站安裝的 Let's Encrypt SSL 憑證即將到期。

簡短說明

Let's Encrypt SSL 憑證在建立後 90 天過期。當您使用 如何在 Lightsail 上託管的 Bitnami 堆疊中安裝 Let's Encrypt SSL 憑證?時,標準憑證會自動續訂。不過,如果憑證設定不正確,自動續訂新可能會失敗。

如果您透過如何在 Amazon Lightsail 上託管的 Bitnami 堆疊中安裝萬用字元 Let's Encrypt SSL 憑證?中的方法 2 來安裝萬用字元 Let's Encrypt 憑證,則您需要手動續訂憑證。方法 2 不支持自動續訂。

下列解決方案會涵蓋如何在 Bitnami 託管的 Lightsail 執行個體上手動續訂憑證,例如 WordPress、LAMP、Magento 和 MEAN。

解決方法

識別憑證安裝工具

識別您用來安裝憑證的工具。若要識別您用來安裝 SSL 憑證的工具,請執行下列動作:

  1. 執行下列命令,在 /etc/letsencrypt/opt/bitnami/letsencrypt 目錄中搜尋憑證檔案。請確定將 DOMAIN 取代為您的網域名稱。

    sudo grep -irl "$(openssl s_client -verify_quiet -showcerts -connect DOMAIN:443 2>/dev/null | sed -n '/BEGIN/,/END/{p;/END/q}' | head -n 3 | tail -n 2)" /opt/bitnami/letsencrypt /etc/letsencrypt
  2. 如果憑證檔案位於 /opt/bitnami/letsencrypt 的子目錄內,則憑證可能是使用 bncert-toolLego 用戶端進行安裝。若要驗證這件事,請執行下列命令:

    sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list

如果步驟 1 中命令的輸出與第二個命令提供的憑證路徑相符,則您的憑證已使用 bncert-toolLego 進行安裝。

如果憑證檔案位於 /etc/letsencrypt 的子目錄內,則憑證可能已使用 Certbot 進行安裝。若要驗證這件事,請執行下列命令:

sudo certbot certificates

如果步驟 1 中命令的輸出與 certbot 命令提供的憑證路徑相符,則您的憑證已使用 Certbot 進行安裝。

根據識別的工具,遵循相關解決方法步驟。

續訂使用 bncert-tool 或 Lego 工具安裝的 Let's Encrypt 憑證

執行以下命令:

sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/letsencrypt/lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/opt/bitnami/letsencrypt" renew --days 90

**注意:**將 EMAIL-ADDRESS 替換為您任何可用的電子郵件地址。或者,使用安裝憑證時使用的相同電子郵件地址。將 DOMAIN 替換為您的網域名稱。

sudo /opt/bitnami/ctlscript.sh start

您可以使用下列命令擷取用來安裝憑證的電子郵件:

sudo ls /opt/bitnami/letsencrypt/accounts/acm*

如果需要,則請使用下列命令確認網域名稱:

sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list

續訂使用 Certbot 工具安裝的 Let's Encrypt 憑證

若要確認您用來安裝憑證的驗證方法,請執行以下命令:

sudo cat /etc/letsencrypt/renewal/DOMAIN.conf

**注意:**將 DOMAIN 替換為憑證的主要網域名稱。

在命令輸出中,檢視 authenticator 參數值。根據值,請遵循下列其中一種續訂方法:

如果 authenticator 參數值為 standalonewebrootapachenginxdns-route53 或其他不是 manual 的值,則請使用下列命令完成續訂:

sudo /opt/bitnami/ctlscript.sh stop
sudo certbot renew
sudo /opt/bitnami/ctlscript.sh start

這些命令會續訂所有將要續訂的已安裝憑證。

-或-

如果 authenticator 參數值為 manual,而 pref_challs 參數值為 dns,則無法設定自動續訂。您必須使用下列步驟對其手動續訂。注意: 每當您續訂憑證時,都必須重複此步驟。

  1. 此方法要求您在網域的 DNS 提供者中新增 TXT 記錄。最佳實務是在 Linux GNU 畫面中執行命令,以防止工作階段逾時。如需更多資訊,請參閱 Linuxize 網站上的如何使用 Linux 畫面
    若要啟動畫面工作階段,請輸入下列命令:

    screen -S letsencrypt
  2. 執行下列命令並尋找 Domains 參數值。將 DOMAIN 取代為憑證的主要網域名稱:

    sudo certbot certificates -d DOMAIN
  3. 執行下列命令以續訂憑證。請確定以相同的順序納入在上一個命令中找到的含 -d 選項的每個網域。如果您新增、移除或變更網域的順序,則可能會建立新憑證,而不是續訂原始憑證。

    sudo certbot certonly --manual --preferred-challenge dns -d DOMAIN-1 -d DOMAIN-2 --force-renewal
  4. 您會收到提示,以驗證您是否擁有指定的網域。此驗證是為了將 TXT 記錄新增至您網域的 DNS 記錄。Let's Encrypt 提供您必須使用進行驗證的單一或多個 TXT 記錄。

  5. 當您在畫面中看到 TXT 記錄時,請在網域的 DNS 中新增提供的記錄。
    **重要事項:**在您確認 TXT 記錄已傳播至網際網路 DNS 之前,請勿按下 Enter 鍵。請勿按下 CTRL+D,因為這會結束目前的畫面工作階段。

  6. 若要確認 TXT 記錄是否已傳播到網際網路 DNS,請在 MX Toolbox 網站的 DNS 文字查詢中查詢。將以下文字輸入至文字方塊:

    _acme-challenge.example.com

    **注意:**將 example.com 替換為您的網域。

  7. 選擇 TXT Lookup 以執行檢查。

  8. 如果您的 TXT 記錄已傳播到網際網路的 DNS,則您會在頁面中看到 TXT 記錄值。返回該畫面,然後按 Enter 鍵

  9. 如果您已從 Shell 中移除,請透過命令:screen -r SESSIONID 返回。

  10. 取得工作階段 ID: 執行 screen -ls 命令。

  11. 如果 Certbot 提示要求您新增另一個 TXT 記錄,請再次完成步驟 5 到 8。

當 SSL 憑證成功生成後,您會收到以下訊息: 「已成功接收憑證」。

AWS 官方已更新 4 個月前