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

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

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

簡短描述

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

標準 Let's Encrypt 憑證

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

解決方案

用來在 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。如需其他受支援 DNS 供應商的指示,請參閱 Lego 文件中的 DNS 供應商

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,請於 DNS 文字查詢中查詢。在文字方塊中輸入下列文字,然後選擇 TXT Lookup (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 網站上的下列資訊:


此文章是否有幫助?


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