在 Amazon Lightsail Bitnami 執行個體中為我的網站安裝的 Let's Encrypt SSL 憑證即將到期。
簡短說明
Let's Encrypt SSL 憑證在建立後 90 天過期。如果您遵循如何在 Lightsail 上託管的 Bitnami 堆疊中安裝 Let's Encrypt SSL 憑證?中提供的步驟來安裝標準的 Let's Encrypt 憑證,然後 SSL 憑證會自動續訂。但是,如果未正確設定,自動續訂可能會失敗。
如果您透過如何在 Amazon Lightsail 上託管的 Bitnami 堆疊中安裝萬用字元 Let's Encrypt SSL 憑證?中的方法 2 來安裝萬用字元 Let's Encrypt 憑證,則您需要手動續訂憑證。方法 2 不支持自動續訂。
下列解決方案會涵蓋如何在 Bitnami 託管的 Lightsail 執行個體上手動續訂憑證,例如 WordPress、LAMP、Magento 和 MEAN。
解決方法
識別憑證安裝工具
識別您用來安裝憑證的工具。若要識別您用來安裝 SSL 憑證的工具,請執行下列動作:
-
執行下列命令,在 /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
-
如果憑證檔案位於 /opt/bitnami/letsencrypt 的子目錄內,則憑證可能是使用 bncert-tool 或 Lego 用戶端進行安裝。若要驗證這件事,請執行下列命令:
sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list
如果步驟 1 中命令的輸出與第二個命令提供的憑證路徑相符,則您的憑證已使用 bncert-tool 或 Lego 進行安裝。
如果憑證檔案位於 /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
sudo /opt/bitnami/ctlscript.sh start
對於所有命令,請將 EMAIL-ADDRESS 和 DOMAIN 取代為正確的值。對於 EMAIL-ADDRESS,請使用您的任何工作電子郵件地址。或者,您使用安裝憑證時使用的相同電子郵件地址。您可以使用下列命令擷取用來安裝憑證的電子郵件:
sudo ls /opt/bitnami/letsencrypt/accounts/acm*
如果需要,則請使用下列命令確認網域名稱:
sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list
續訂使用 Certbot 工具安裝的 Let's Encrypt 憑證
執行下列命令以判斷您用來安裝憑證的驗證方法。將 DOMAIN 取代為憑證的主要網域名稱:
sudo cat /etc/letsencrypt/renewal/DOMAIN.conf
在命令輸出中,檢視 authenticator 參數值。根據值,請遵循下列其中一種續訂方法:
如果 authenticator 參數值為 standalone、webroot、apache、nginx、dns-route53 或其他不是 manual 的值,則請使用下列命令完成續訂:
sudo /opt/bitnami/ctlscript.sh stop
sudo certbot renew
sudo /opt/bitnami/ctlscript.sh start
這些命令會續訂所有將要續訂的已安裝憑證。
-或-
如果 authenticator 參數值為 manual,而 pref_challs 參數值為 dns,則無法設定自動續訂。您必須使用下列步驟對其手動續訂。注意: 每當您續訂憑證時,都必須重複此步驟。
-
此方法要求您在網域的 DNS 提供者中新增 TXT 記錄。最佳實務是在 Linux GNU 畫面中執行命令,以防止工作階段逾時。如需詳細資訊,請參閱如何使用 Linux 畫面。
若要啟動畫面工作階段,請輸入下列命令:
screen -S letsencrypt
-
執行下列命令並尋找 Domains 參數值。將 DOMAIN 取代為憑證的主要網域名稱:
sudo certbot certificates -d DOMAIN
-
執行下列命令以續訂憑證。請確定以相同的順序納入在上一個命令中找到的含 -d 選項的每個網域。如果您新增、移除或變更網域的順序,則可能會建立新憑證,而不是續訂原始憑證。
sudo certbot certonly --manual --preferred-challenge dns -d DOMAIN-1 -d DOMAIN-2 --force-renewal
-
您會收到提示,以驗證您是否擁有指定的網域。此驗證是為了將 TXT 記錄新增至您網域的 DNS 記錄。Let's Encrypt 提供您必須使用進行驗證的單一或多個 TXT 記錄。
-
當您在畫面中看到 TXT 記錄時,請在網域的 DNS 中新增提供的記錄。
**重要事項:**在您確認 TXT 記錄已傳播至網際網路 DNS 之前,請勿按下 Enter 鍵。請勿按下 CTRL+D,因為這會結束目前的畫面工作階段。
-
若要確認 TXT 記錄是否已傳播到網際網路 DNS,請在 MX Toolbox 網站的 DNS 文字查詢中查詢。在文字框中輸入下列文字,然後選擇 TXT 查詢以執行檢查。將 example.com 取代為您的網域:
_acme-challenge.example.com
-
如果您的 TXT 記錄已傳播到網際網路的 DNS,則您會在頁面中看到 TXT 記錄值。您現在可以返回畫面並按下 ENTER 鍵。
-
如果您已從 Shell 中移除,請透過命令 screen -r SESSIONID 返回。執行 screen -ls 命令以取得工作階段 ID。
-
如果 Certbot 提示要求您新增另一個 TXT 記錄,則請再次完成步驟 5-8。
-
順利產生 SSL 憑證後,您會收到「已順利接收憑證」訊息。