如何在 Amazon Lightsail 中安裝萬用字元 Let's Encrypt SSL 憑證?

上次更新日期:2021-10-20

如何在 Amazon Lightsail 執行個體中為我的網站安裝萬用字元 SSL 憑證?

簡短描述

以下解決方案可為不使用 Bitnami 堆疊的 Lightsail 執行個體中所託管的網站安裝萬用字元 Let's Encrypt SSL 憑證。這些執行個體包括 Amazon Linux 2、Ubuntu 等執行個體。如果您有不同的執行個體藍圖或想要安裝標準憑證,請參閱下列任一種憑證:

標準 Let's Encrypt 憑證

如需如何在未使用 Bitnami 堆疊的 Lightsail 執行個體 (例如 Amazon Linux 2、Ubuntu 等) 上安裝標準 Let's Encrypt SSL 憑證 (非萬用字元) 的相關資訊,請參閱如何在 Lightsail 執行個體中安裝標準 Let's Encrypt SSL 憑證?

如需如何在具有 Bitnami 堆疊的 Lightsail 執行個體 (例如 WordPress、LAMP、Magento 等) 中安裝標準 Let's Encrypt SSL 憑證 (非萬用字元) 的相關資訊,請參閱如何在 Amazon Lightsail 上託管的 Bitnami 堆疊中安裝標準 Let's Encrypt SSL 憑證?

萬用字元 Let's Encrypt 憑證 (例如,*.example.com)

如需如何在含 Bitnami 堆疊的 Lightsail 執行個體 (例如 WordPress、LAMP、Magento、MEAN 等) 中安裝萬用字元 Let's Encrypt 憑證的相關資訊,請參閱如何在 Amazon Lightsail 上託管的 Bitnami 堆疊中安裝萬用字元 Let's Encrypt SSL 憑證?

解決方案

用來在 Lightsail 執行個體上安裝萬用字元 Let's Encrypt SSL 憑證的步驟取決於您的網域使用的 DNS 供應商。若要判斷要使用的方法,請確認您的 DNS 供應商是否列在 DNS 外掛程式的 Cerbot DNS 清單中。然後,選取適當的方法來使用:

方法 1:如果您的網域使用其中列出的 DNS 供應商,請使用這個方法。

方法 2:如果您的網域沒有使用任何列出的 DNS 供應商,請使用這個方法。

方法 1

先決條件和限制

  • 下列步驟可在伺服器中安裝憑證。您必須手動完成額外步驟,例如設定 WebServer 以使用憑證以及設定 HTTPS 重新引導。
  • 網域必須使用 Certbot DNS 清單中列出的 DNS 供應商。

注意:此方法需要在開始之前安裝 Certbot 工具。如需安裝說明,請參閱如何在 Lightsail 執行個體中安裝 Certbot 套件,以便安裝 Let's Encrypt?

在下例中,DNS 供應商是 Amazon Route 53。如需其他受支援 DNS 供應商的說明,請參閱 DNS 外掛程式

1.    建立具有程式設計存取權的 AWS Identity and Access Management (IAM) 使用者。若要了解讓 Certbot 與 IAM 使用者連接以完成 DNS 挑戰所需的最低許可,請參閱 certbot-dns-route-53

2.    在執行個體中執行下列命令,以在 nano 編輯器中開啟 /root/.aws/credentials

sudo mkdir /root/.aws
sudo nano /root/.aws/credentials

3.    將下面兩行複製到檔案中。然後按 ctrl+x 儲存檔案,再按 yENTER 鍵。

在下列命令中,將 aws_access_key_id 換成步驟 1 中建立的存取金鑰 ID。將 aws_secret_access_key 換成步驟 1 中建立的私密存取金鑰。

[default]
aws_access_key_id = AKIA************E
aws_secret_access_key = 1yop**************************l

4.    在伺服器中建立 Let's Encrypt 憑證。將 example.com 換成您的網域名稱。

如果您的網域使用 Amazon Route 53 作為 DNS 供應商,請執行下列命令:

sudo certbot certonly --dns-route53 -d example.com -d *.example.com

系統成功產生 SSL 憑證之後,您會收到訊息「成功收到憑證」。訊息中也會提供憑證和金鑰檔案的位置。將這些檔案位置儲存到記事本,以供步驟 6 使用。

5.    設定自動憑證更新。

如果使用 snapd 安裝 Certbot 套件,則 systemd 計時器或 cronjob 中會自動設定更新。

如果作業系統發行版是 Amazon Linux 2 或 FreeBSD,則不會使用 snapd 安裝 Certbot 套件。在此情況下,您必須執行下列命令,以手動方式設定更新:

echo "30 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null

6.    系統只完成了憑證安裝和更新設定程序。您還是必須設定 Web 伺服器以使用此憑證,並設定 HTTPS 重新引導。此組態會因您在執行個體中的 Web 伺服器設定而有所不同。如需完成這些步驟的說明,請參閱您的 Web 服務文件。

方法 2

先決條件和限制

  • 下列步驟可在伺服器中安裝憑證。您必須手動完成額外步驟,例如設定 WebServer 以使用憑證以及設定 HTTPS 重新引導。
  • 此方法不支援自動更新憑證。

注意:此方法需要在開始之前安裝 Certbot 工具。如需安裝說明,請參閱如何在 Lightsail 執行個體中安裝 Certbot 套件,以便安裝 Let's Encrypt?

1.    此方法需要在網域的 DNS 供應商中新增 TXT 記錄。此程序可能會進行一段時間,因此最佳實務做法是在 Linux GNU Screen 中執行命令,以防止工作階段逾時。若要啟動 Screen 工作階段,請輸入下列命令:

screen -S letsencrypt

2.    輸入下列命令以啟動互動模式的 Certbot。此命令會指示 Certbot 使用手動授權方法與 DNS 挑戰來驗證網域擁有權。將 example.com 換成您的網域名稱。

sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com

3.    您會收到提示,要求您將 TXT 記錄新增至您網域的 DNS 記錄中,以驗證您擁有指定的網域。Let's Encrypt 會提供一個或多個進行驗證所需用到的 TXT 記錄。

4.    當您在畫面中看到 TXT 記錄時,請先在您網域的 DNS 中新增所提供的記錄。在確認 TXT 記錄已傳播到網際網路 DNS 之前,請勿按 ENTER 鍵。另外,也請勿按 CTRL+D,否則會終止目前的 Screen 工作階段。

5.    若要確認 TXT 記錄已傳播到網際網路 DNS,請於 DNS 文字查詢中查詢。在文字方塊中輸入下列文字,然後選擇 TXT 查詢以執行檢查。請務必將 example.com 換成您的網域。

_acme-challenge.example.com

6.    如果您的 TXT 記錄已傳播到網際網路的 DNS,便會在頁面中看到 TXT 記錄值。您現在可以返回 Screen,然後按 ENTER 鍵。

注意:如果系統將您從 Shell 中移除,則可使用命令 screen -r SESSIONID 重新進入。執行 screen -ls 命令可取得工作階段 ID。

7.    如果 Certbot 的提示要求您再新增一個 TXT 記錄,請重複步驟 4 到步驟 7。

8.    系統成功產生 SSL 憑證之後,您會收到訊息「成功收到憑證」。訊息中也會提供憑證和金鑰檔案的位置。將這些檔案位置儲存到記事本,以供下一個步驟使用。

9.    系統只完成了憑證安裝和更新設定程序。您還是必須設定 Web 伺服器以使用此憑證,並設定 HTTPS 重新引導。此組態會因您在執行個體中的 Web 伺服器設定而有所不同。如需完成這些步驟的說明,請參閱您的 Web 服務文件。


此文章是否有幫助?


您是否需要帳單或技術支援?