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

5 分的閱讀內容
0

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

簡短描述

如需有關如何安裝不同執行個體藍圖或標準憑證的相關資訊,請參閱下列 AWS 知識中心文章:

解決方法

在 Bitnami 託管的 Lightsail 執行個體上安裝萬用字元 Let's Encrypt SSL 憑證的步驟取決於您網域使用的 DNS 供應商。檢查您的 DNS 供應商是否列在 Lego 網站上 DNS 供應商中。然後,選取要使用的適當方法:

  • 如果您的網域使用其中一個列出的 DNS 供應商,請使用 Bitnami 提供的 Lego 工具。
  • 如果您的網域沒有使用其中一個列出的 DNS 供應商,請使用 Certbot 套件。

**注意:**檔案路徑可能會變更,這取決於 Bitnami 堆疊是否使用原生 Linux 系統套件 (方法 A) 還是獨立安裝 (方法 B)。最新的 Bitnami WordPress 藍圖僅適用於方法 A。

若要識別 Bitnami 安裝類型,請執行下列命令:

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

Lego 工具

Bitnami 提供了 bncert-tool 和 Lego 工具。Lego 工具支援建立萬用字元 SSL 憑證。bncert-tool 不支援建立萬用字元 SSL 憑證。

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

若要使用 Lego 工具安裝萬用字元 Let's Encrypt SSL 憑證,請完成下列步驟:

  1. 建立具有程式存取權的 AWS Identity and Access Management (IAM) 使用者。若要確定 Lego 完成 DNS 挑戰所需的 IAM 使用者許可,請參閱 Lego 網站上的 IAM 政策範例

  2. 若要在 nano 編輯器中開啟 /root/.aws/credentials 檔案,請執行下列命令:

    sudo mkdir /root/.aws
    sudo nano /root/.aws/credentials
  3. 在憑證檔案上輸入下列行:

    [default]
    aws_access_key_id = AKIA************E
    aws_secret_access_key = 1yop**************************l
    region = us-east-1

    **注意:**將 aws_access_key_idaws_secret_access_key 取代為您的值。將 us-east-1 取代為您的 Lightsail 執行個體的 AWS 區域。

  4. 若要儲存檔案,請依次按 Ctrl + X 鍵、y 鍵和 ** Enter** 鍵。

  5. 如果您的 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 xzf lego.tar.gz
    sudo mkdir -p /opt/bitnami/letsencrypt
    sudo mv lego /opt/bitnami/letsencrypt/lego
  6. 若要在伺服器中建立萬用字元 Let's Encrypt 憑證,請根據您的伺服器類型執行下列命令:
    Route 53 名稱伺服器:

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

    Lightsail 名稱伺服器:

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

    注意:EMAIL-ADDRESS 取代為您想要接收憑證更新的電子郵件地址。將 DOMAIN 取代為您的網域名稱。
    SSL 憑證和私有金鑰在下列位置產生:
    /opt/bitnami/letsencrypt/certificates/DOMAIN.crt
    /opt/bitnami/letsencrypt/certificates/DOMAIN.key

  7. 若要停止 Bitnami 堆疊服務,請執行下列命令:

    sudo /opt/bitnami/ctlscript.sh stop
  8. 根據您的伺服器和方法,將 SSL 憑證和憑證金鑰檔案連結至 Web 伺服器目前讀取的位置:
    Apache,方法 A

    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

    Apache,方法 B

    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

    NGINX,方法 A

    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

    NGINX,方法 B

    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

    **注意:**對於上述命令,請將 DOMAIN 取代為您的網域名稱。

  9. 若要啟動 Bitnami 堆疊服務,請執行下列命令:

    sudo /opt/bitnami/ctlscript.sh start
  10. 若要自動續約憑證,請執行下列命令以開啟 crontab 編輯器:

sudo crontab -e -u bitnami

**注意:**Let's Encrypt 憑證有效期為 90 天。 在 crontab 檔案上輸入下列行,然後儲存檔案:
Apache

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

Nginx

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/nginx/sbin/nginx -c /opt/bitnami/nginx/conf/nginx.conf -s reload

**注意:**將 EMAIL-ADDRESSDOMAINDNS 取代為您的值。 設定 HTTPS 重新導向。如需詳細資訊,請參閱 Bitnami 網站上的使用 Apache 強制 HTTPS 重新導向使用 NGINX 強制 HTTPS 重新導向

Certbot 套件

先決條件:

  • 安裝 Certbot
  • 確定您的 Linux 發行版。對於 Bitnami 託管的執行個體,Linux 發行版是 Debian 或 Ubuntu。執行下列命令以確認您的 Linux 發行版:
    cat /etc/os-release | grep -i ^id
    **注意:**此方法不支援自動續約憑證。

若要使用 Certbot 套件安裝萬用字元 Let's Encrypt SSL 憑證,請完成下列步驟:

  1. 啟動 Linux GNU Screen 工作階段。由於在網域的 DNS 供應商中新增 TXT 記錄需要時間,因此工作階段可能會逾時。最佳實務是在 Linux GNU Screen 中執行命令,以便工作階段不會逾時。若要啟動畫面工作階段,請執行下列命令:

    screen -S letsencrypt
  2. 若要啟動 Certbot 互動模式,請執行下列命令:

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

    **注意:**將 example.com 取代為您的值。
    如果您收到錯誤回應,例如「找不到 bash: certbot: 命令」,則可能需要將 /bin/snap 新增至 PATH 環境變數。首先,輸入 "exit",然後按 Enter 鍵。或者,按 Ctrl + D 鍵以結束畫面工作階段。然後,編輯 /etc/environment,然後在清單中新增 /snap/bin。重新啟動您的系統。若要確認不再出現錯誤,請執行下列命令:

    $ certbot -h
  3. 複製 Let’s Encrypt 提供的 TXT 記錄。Let's Encrypt 提供您必須使用進行驗證的單一或多個 TXT 記錄。

  4. 在網域的 DNS 中新增提供的記錄。
    重要: 在您確認 TXT 記錄已傳播至網際網路 DNS 之前,請勿按下 Enter 鍵。此外,請勿按 Ctrl + D 鍵,因為此動作會終止畫面工作階段。

  5. 若要確認記錄是否已傳播,請在 MxToolbox 網站上的 DNS 文字查詢中查詢 TXT 記錄:

    _acme-challenge.example.com

    **注意:**將 example.com 取代為您的值。
    如果您的 TXT 記錄已傳播,您會在頁面上看到 TXT 記錄值。返回上一個畫面,然後按 Enter 鍵。

  6. 如果您已從 Shell 中移除,請執行下列命令以返回 Shell:

    Screen -r SESSIONID

    **注意:**執行 screen -ls 命令以取得工作階段 ID。

  7. (選用) 如果出現提示,請重複上述步驟以新增另一個 TXT 記錄。
    **注意:**如果您使用 Route 53 作為 DNS 供應商,則每列輸入一個 TXT 值。編輯 TXT 記錄,然後在新列中新增 certbot 提供的 TXT 值。

  8. 儲存 SSL 憑證和金鑰檔案的檔案位置。產生 SSL 憑證後,您會收到「已成功接收憑證」訊息。

  9. 若要將 Web 伺服器設定為使用憑證,請根據您的伺服器和方法執行下列命令:
    Apache,方法 A

    sudo /opt/bitnami/ctlscript.sh stop
    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 start

    Apache,方法 B

    sudo /opt/bitnami/ctlscript.sh stop
    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 start

    NGINX,方法 A

    sudo /opt/bitnami/ctlscript.sh stop
    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 start

    NGINX,方法 B

    sudo /opt/bitnami/ctlscript.sh stop
    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 start

    **注意:**對於上述命令,請將 DOMAIN 取代為您的網域名稱。

  10. 設定 HTTPS 重新導向。如需詳細資訊,請參閱 Bitnami 網站上的使用 Apache 強制 HTTPS 重新導向使用 NGINX 強制 HTTPS 重新導向

AWS 官方
AWS 官方已更新 8 個月前