如何在 Amazon Lightsail 上託管的 Bitnami 堆疊中安裝萬用字元 Let's Encrypt SSL 憑證?

上次更新日期:2022 年 10 月 31 日

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

簡短描述

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

標準 Let's Encrypt 憑證

若要在沒有 Bitnami 堆疊的 Lightsail 執行個體中安裝標準的 Let's Encrypt SSL 憑證,請參閱如何在 Lightsail 執行個體中安裝標準的 Let's Encrypt SSL 憑證? 這包括如 Amazon Linux 2 和 Ubuntu 的執行個體。

若要在帶有 Bitnami 堆疊的 Lightsail 執行個體中安裝標準的 Let's Encrypt SSL 憑證,請參閱如何在 Amazon Lightsail 上託管的 Bitnami 堆疊中安裝 Let's Encrypt SSL 憑證? 這包括如 WordPress、LAMP 和 Magento 的執行個體

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

若要在沒有 Bitnami 堆疊的 Lightsail 執行個體中安裝萬用字元 Let's Encrypt 憑證,請參閱如何在 Amazon Lightsail 中安裝萬用字元 Let's Encrypt SSL 憑證? 這包括如 Amazon Linux 2 和 Ubuntu 的執行個體。

解決方案

用來在 Bitnami 託管的 Lightsail 執行個體上安裝萬用字元 Let's Encrypt SSL 憑證的步驟取決於您的網域使用的 DNS 供應商。若要判斷要使用的方法,請確認您的 DNS 供應商有出現在 Lego 文件中的 DNS 供應商清單中。然後,選取適當的方法來使用:

方法 1:如果您的網域使用所列出的其中一個 DNS 供應商,請使用 Bitnami 所提供的 Lego 工具。

方法 2:如果您的網域未使用所列出的任何 DNS 供應商,請使用 Certbot 套件。

注意:根據您的 Bitnami 堆疊使用的是原生 Linux 系統套件 (方法 A),還是其屬於獨立安裝 (方法 B),本文所提到的檔案路徑可能會不同。若要識別您的 Bitnami 安裝類型,請執行下列命令:

test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."

方法 1

Bitnami 堆疊會隨 bncert-tool 一起提供 Lego 工具。此工具可支援建立萬用字元 SSL 憑證,bncert-tool 則不支援。

先決條件和限制

  • 下列步驟可在伺服器中安裝憑證。您必須手動完成額外步驟,例如設定 Web 伺服器以使用憑證以及設定 HTTPS 重新導向。
  • 網域必須使用 Lego 文件中的 DNS 供應商所列出的其中一個 DNS 供應商。

注意:在下列範例中,DNS 供應商是 Amazon Route 53 或 Amazon Lightsail。

1.    建立具有程式設計存取權的 AWS Identity and Access Management (IAM) 使用者。若要了解要讓 Lego 完成 DNS 挑戰所必須連接給 IAM 使用者的最低權限,請參閱 Lego 文件中的政策

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.    如果您的 Bitnami 執行個體未包含目錄 /opt/bitnami/letsencrypt/,則使用下列命令手動安裝 Lego 用戶端:

cd /tmp
curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i - -O lego.tar.gz
tar xf lego.tar.gz
sudo mkdir -p /opt/bitnami/letsencrypt
sudo mv lego /opt/bitnami/letsencrypt/lego

5.    在伺服器中建立 Let's Encrypt 憑證。將 EMAIL-ADDRESS 取代為您想要接收有關憑證後續更新的電子郵件地址。將 DOMAIN 取代為您的網域名稱。

Route 53 名稱伺服器

sudo /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns route53 --path="/opt/bitnami/letsencrypt" run

Lightsail 名稱伺服器

sudo /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns lightsail --path="/opt/bitnami/letsencrypt" run

系統成功產生 SSL 憑證之後,您會收到訊息「伺服器以憑證做出回應」。SSL 憑證和私有金鑰會於下列位置產生:

/opt/bitnami/letsencrypt/certificates/DOMAIN.crt

/opt/bitnami/letsencrypt/certificates/DOMAIN.key

6.    將 SSL 憑證和憑證金鑰檔案連結至 Web 伺服器目前所讀取的位置:

方法 A 下的 Apache

在下列範例命令中,將 DOMAIN 預留位置取代為您的網域名稱。

sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.old
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/apache2/conf/bitnami/certs/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt
sudo /opt/bitnami/ctlscript.sh restart apache

方法 B 下的 Apache

在下列範例命令中,將 DOMAIN 預留位置取代為您的網域名稱。

sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
sudo mv /opt/bitnami/apache2/conf/server.csr /opt/bitnami/apache2/conf/server.csr.old
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/apache2/conf/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/server.crt
sudo /opt/bitnami/ctlscript.sh restart apache

方法 A 下的 NGINX

在下列範例命令中,將 DOMAIN 預留位置取代為您的網域名稱。

sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.key /opt/bitnami/nginx/conf/bitnami/certs/server.key.old
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/nginx/conf/bitnami/certs/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt
sudo /opt/bitnami/ctlscript.sh restart nginx

方法 B 下的 NGINX

在下列範例命令中,將 DOMAIN 預留位置取代為您的網域名稱。

sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/nginx/conf/server.crt.old
sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/nginx/conf/server.key.old
sudo mv /opt/bitnami/nginx/conf/server.csr /opt/bitnami/nginx/conf/server.csr.old
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/nginx/conf/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/server.crt
sudo /opt/bitnami/ctlscript.sh restart nginx

7.    設定自動憑證更新。

Let's Encrypt 憑證的有效期為 90 天。若要自動進行憑證更新,讓憑證在到期前自動更新,請執行下列動作:

執行下列命令以開啟 crontab 編輯器:

sudo crontab -e -u bitnami

將下列幾行新增至 crontab 檔案,然後儲存檔案。將 EMAIL-ADDRESS 取代為您的電子郵件地址、將 DOMAIN 取代為您的網域名稱,並將 DNS 取代為您的名稱伺服器供應商名稱 (Route 53、Lightsail 等)。

0 0 * * * sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="EMAIL-ADDRESS" --domains="DOMAIN"  --domains="*.DOMAIN" --dns DNS renew >> /var/log/letsencrypt.log 2>&1 && sudo /opt/bitnami/apache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf -k graceful

8.    設定 HTTPS 重新導向。如需詳細資訊,請參閱 Bitnami 網站上的下列資訊:

方法 2

先決條件和限制

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

注意:在開始進行下列步驟之前,請先安裝 Certbot。如需安裝指示,請參閱如何在 Lightsail 執行個體中安裝 Certbot 套件,以便安裝 Let's Encrypt 憑證?

針對 Bitnami 託管的執行個體,Linux 發行版本會是 Debian 或 Ubuntu。請執行下列命令以確認您擁有的是哪個 Linux 發行版本:

cat /etc/os-release | grep -i ^id

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,請於 MxToolbox 上的 DNS 文字查詢中查詢。在文字方塊中輸入下列文字,然後選擇 TXT 查詢以執行檢查。請務必將 example.com 換成您的網域。

_acme-challenge.example.com

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

7.    如果系統將您從 Shell 中移除,請使用命令 screen -r SESSIONID 來返回。執行命令 screen -ls 來取得工作階段 ID。

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

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

10.    系統只完成了憑證安裝和更新設定程序。您還是必須設定 Web 伺服器以使用此憑證,並設定 HTTPS 重新導向。請使用下列其中一組命令,設定 Web 伺服器以使用憑證。

方法 A 下的 Apache

在下列範例命令中,將 DOMAIN 預留位置取代為您的網域名稱。

sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.old
sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/apache2/conf/bitnami/certs/server.key
sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/apache2/conf/bitnami/certs/server.crt
sudo /opt/bitnami/ctlscript.sh restart apache

方法 B 下的 Apache

在下列範例命令中,將 DOMAIN 預留位置取代為您的網域名稱。

sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/apache2/conf/server.key
sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/apache2/conf/server.crt
sudo /opt/bitnami/ctlscript.sh restart apache

方法 A 下的 NGINX

在下列範例命令中,將 DOMAIN 預留位置取代為您的網域名稱。

sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.key /opt/bitnami/nginx/conf/bitnami/certs/server.key.old
sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/nginx/conf/bitnami/certs/server.key
sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/nginx/conf/bitnami/certs/server.crt
sudo /opt/bitnami/ctlscript.sh restart nginx

方法 B 下的 NGINX

在下列範例命令中,將 DOMAIN 預留位置取代為您的網域名稱。

sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/nginx/conf/server.crt.old
sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/nginx/conf/server.key.old
sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/nginx/conf/server.key
sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/nginx/conf/server.crt
sudo /opt/bitnami/ctlscript.sh restart nginx

8.    設定 HTTPS 重新導向。如需詳細資訊,請參閱 Bitnami 網站上的下列資訊:


此文章是否有幫助?


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