使用免費 Let's Encrypt SSL憑證保護您的 Lightsail WordPress 執行個體 - Amazon Lightsail

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用免費 Let's Encrypt SSL憑證保護您的 Lightsail WordPress 執行個體

提示

Amazon Lightsail 提供引導式工作流程,可自動在 WordPress 執行個體上安裝和設定 Let's Encrypt 憑證。我們強烈建議您使用工作流程,而不是遵循本教學課程中的手動步驟。如需詳細資訊,請參閱啟動和設定 WordPress 執行個體

Lightsail 可讓您使用 SSL/TLS 使用 Lightsail 負載平衡器,輕鬆保護您的網站和應用程式。不過,使用 Lightsail 負載平衡器通常可能不是正確的選擇。或許您的網站不需要負載平衡器提供的可擴展性或容錯能力,或者您是要最佳化成本。在後者案例中,您可以考慮使用 Let's Encrypt 來取得免費SSL憑證。若是如此,則無問題。您可以將這些憑證與 Lightsail 執行個體整合。

透過本指南,您將了解如何使用 Certbot 請求 Let’s Encrypt 萬用字元憑證,並使用 Really Simple SSL 外掛程式將其與您的 WordPress 執行個體整合。

  • Bitnami 執行個體所使用的 Linux 發行版本已在 2020 年 7 月從 Ubuntu 變更為 Debian。由於這項變更,本教學課程中的部分步驟會根據執行個體的 Linux 發行版本而有所不同。變更後才建立的所有 Bitnami 藍圖執行個體均會使用 Debian Linux 發行版本。在變更之前建立的執行個體將繼續使用 Ubuntu Linux 發行版本。若要檢查執行個體的分發,請執行 uname -a 命令。該回應會將執行個體的 Linux 發行版本顯示為 Ubuntu 或 Debian。

  • Bitnami 已修改許多堆疊的檔案結構。本教學課程中的檔案路徑可能會根據您的 Bitnami 堆疊是否使用原生 Linux 系統套件 (方法 A),或是否為獨立安裝 (方法 B) 而變更。若要識別您的 Bitnami 安裝類型以及要遵循的方法,請執行下列命令

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

內容

開始之前

開始本教學課程之前,您應該考量下列事項:

請改用 Bitnami HTTPS組態 (bncert) 工具

本教學中概述的步驟說明如何使用手動程序實作 SSL/TLS 憑證。不過,Bitnami 提供更自動化的程序,使用通常預先安裝在 WordPress Lightsail 執行個體上的 Bitnami HTTPS組態 (bncert) 工具。我們強烈建議您使用該工具,而非依照本教學課程中的手動步驟。本教學課程是在 bncert 工具可供使用之前完成。如需使用 bncert工具的詳細資訊,請參閱在 Amazon Lightsail 中HTTPS啟用執行個體 WordPress

識別執行個體 WordPress的 Linux 發行版本

Bitnami 執行個體所使用的 Linux 發行版本已在 2020 年 7 月從 Ubuntu 變更為 Debian。變更後才建立的所有 Bitnami 藍圖執行個體均會使用 Debian Linux 發行版本。在變更之前建立的執行個體將繼續使用 Ubuntu Linux 發行版本。由於這項變更,本教學課程中的部分步驟會根據執行個體的 Linux 發行版本而有所不同。您必須識別執行個體的 Linux 發行版本,以便您知道本教學課程中要使用哪些步驟。若要識別執行個體的 Linux 發行版本,請執行 uname -a 命令。該回應會將執行個體的 Linux 發行版本顯示為 Ubuntu 或 Debian。

確定適用於您的執行個體之教學課程

Bitnami 正在修改其許多堆疊的檔案結構。本教學課程中的檔案路徑可能會根據您的 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:完成先決條件

請先完成事前準備 (若尚未完成):

完成先決條件後,請繼續前往本教學課程的下一節

步驟 2:在您的 Lightsail 執行個體上安裝 Certbot

Certbot 是一種用戶端,用於從 Let’s Encrypt 請求憑證並將其部署至 Web 伺服器。Let's Encrypt 使用 ACME 通訊協定來發行憑證,而 Certbot 是ACME啟用 的用戶端,可與 Let's Encrypt 互動。

在 Lightsail 執行個體上安裝 Certbot
  1. 登入 Lightsail 主控台

  2. 在左側導覽窗格中,選擇您要連線之執行個體的SSH快速連線圖示。

    SSH Lightsail 首頁上的快速連線。
  3. 連接 Lightsail 瀏覽器型SSH工作階段後,請輸入下列命令來更新執行個體上的套件:

    sudo apt-get update
    更新執行個體上的套件。
  4. 輸入下列命令以安裝軟體屬性套件。Certbot 的開發人員使用個人套件封存 (PPA) 來分發 Certbot。軟體屬性套件可讓您更有效率地使用 PPAs。

    sudo apt-get install software-properties-common
    注意

    如果您在執行 Could not get lock 命令時遭遇 sudo apt-get install 錯誤,請等待大約 15 分鐘後再試一次。此錯誤可能是由使用 Apt 套件管理工具安裝自動升級的 cron 任務所引起的。

  5. 輸入下列命令來安裝GPG套件,並將 Certbot 新增至本機 apt 儲存庫:

    注意

    步驟 5 僅適用於使用 Ubuntu Linux 發行版本的執行個體。如果您的執行個體使用 Debian Linux 發行版本,請略過此步驟。

    sudo apt-get install gpg -y
    sudo apt-add-repository ppa:certbot/certbot -y
  6. 輸入下列命令更新 apt 以包含新的儲存庫:

    sudo apt-get update -y
  7. 輸入下列命令以安裝 Certbot:

    sudo apt-get install certbot -y

    Certbot 現在已安裝在您的 Lightsail 執行個體上。

  8. 保持瀏覽器型SSH終端機視窗開啟,您會在本教學課程稍後再返回。繼續前往本教學課程的下一節

步驟 3:請求 Let’s Encrypt SSL 萬用字元憑證

開始從 Let’s Encrypt 請求憑證的程序。使用 Certbot (請求萬用字元憑證) 可讓您針對網域及其子網域使用單一憑證。例如,單一萬用字元憑證適用於 example.com 頂層網域,以及 blog.example.comstuff.example.com 子網域。

請求 Let’s Encrypt SSL 萬用字元憑證
  1. 在此教學課程步驟 2 中使用的相同瀏覽器型SSH終端機視窗中,輸入下列命令來設定網域的環境變數。您現在可以更有效率複製和貼上命令以取得憑證。請務必以註冊的網域名稱取代 domain

    DOMAIN=domain
    WILDCARD=*.$DOMAIN

    範例:

    DOMAIN=example.com
    WILDCARD=*.$DOMAIN
  2. 輸入下列命令確認變數傳回正確的值:

    echo $DOMAIN && echo $WILDCARD

    您應該會看到類似以下的結果:

    確認網域環境變數。
  3. 在互動式模式中輸入下列命令啟動 Certbot。此命令會告知 Certbot 使用手動授權方法,以DNS驗證網域擁有權。這會為您的頂層網域及其子網域請求萬用字元憑證。

    sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly
  4. 在提示時輸入您的電子郵件地址,這會用於續約和安全性注意事項。

  5. 閱讀 Let’s Encrypt 服務條款。完成時,如果您同意請按 A。如果您不同意,就無法取得 Let’s Encrypt 憑證。

  6. 根據分享您電子郵件地址的提示和關於您 IP 地址被記錄的警告做出回應。

  7. Let’s Encrypt 現在會提示您確認您擁有所指定的網域。您可以透過將TXT記錄新增至網域DNS的記錄來執行此操作。提供一組TXT記錄值,如下列範例所示:

    注意

    Let's Encrypt 可能會提供一或多個記錄TXT,您必須用於驗證。在這個範例中,我們提供了兩個TXT記錄供驗證使用。

    TXT Let's Encrypt 憑證的記錄。
  8. 保持 Lightsail 瀏覽器型SSH工作階段開啟 - 您稍後在本教學中會返回它。繼續前往本教學課程的下一節

步驟 4:將TXT記錄新增至網域DNS的區域

將TXT記錄新增至網域DNS的區域會驗證您是否擁有網域。基於示範目的,我們使用 Lightsail DNS區域。不過,對於網域註冊商通常託管的其他DNS區域,這些步驟可能相似。

注意

若要進一步了解如何為網域建立 Lightsail DNS區域,請參閱在 Lightsail 中建立DNS區域以管理網域DNS的記錄

在 Lightsail 中將TXT記錄新增至網域DNS的區域
  1. 在左側導覽窗格中,選擇網域 & DNS

  2. 在頁面的區域DNS區段下,選擇您在 Certbot 憑證請求中指定的網域DNS區域。

  3. 在DNS區域編輯器中,選擇DNS記錄

  4. 選擇 Add record (新增記錄)。

  5. 記錄類型下拉式功能表中,選擇TXT記錄

  6. 將 Let's Encrypt 憑證請求指定的值輸入 Record name (記錄名稱) 和 Responds with (回應內容) 欄位。

    注意

    Lightsail 主控台會預先填入您網域的頂點部分。例如,如果您要新增 _acme-challenge.example.com 子網域,則只需在文字方塊中輸入 _acme-challenge,當您儲存記錄時,Lightsail 會新增 .example.com 部分。

  7. 選擇 Save (儲存)。

  8. 重複步驟 4 到 7 來新增 Let’s Encrypt 憑證請求指定的第二組TXT記錄。

  9. 保持 Lightsail 主控台瀏覽器視窗開啟 - 您稍後在本教學課程中會返回它。繼續前往本教學課程的下一節

步驟 5:確認TXT記錄已傳播

使用 MxToolbox 公用程式來確認TXT記錄已傳播至網際網路的 DNS。DNS記錄傳播可能需要一段時間,取決於您的DNS託管提供者,以及為您的DNS記錄設定的存留時間 (TTL)。請務必完成此步驟,並確認TXT記錄已傳播,然後再繼續您的 Certbot 憑證請求。否則,您的憑證請求會失敗。

確認TXT記錄已傳播至網際網路的 DNS
  1. 開啟新的瀏覽器視窗,然後前往 https://mxtoolbox.com/TXTLookup.aspx

  2. 將以下文字輸入文字方塊。請務必以您的網域取代 domain

    _acme-challenge.domain

    範例:

    _acme-challenge.example.com
    MXToolbox TXT 記錄查詢。
  3. 選擇TXT查詢以執行檢查。

  4. 這會產生以下其中一個回應:

    • 如果您的TXT記錄已傳播到網際網路的 DNS,您會看到類似下列螢幕擷取畫面所示的回應。關閉瀏覽器視窗,並繼續前往本教學課程的下一節

      確認TXT記錄已傳播。
    • 如果您的TXT記錄尚未傳播到網際網路的 DNS,您會看到DNS記錄找不到回應。確認您已將正確的DNS記錄新增至網域DNS的區域。如果您已新增正確的記錄,請等待一段時間,讓網域DNS的記錄傳播,然後再次執行TXT查詢。

步驟 6:完成 Let’s Encrypt SSL憑證請求

返回 WordPress 執行個體的 Lightsail 瀏覽器型SSH工作階段,並完成 Let’s Encrypt 憑證請求。Certbot 會將您的SSL憑證、鏈結和金鑰檔案儲存至 WordPress 執行個體上的特定目錄。

完成 Let’s Encrypt SSL憑證請求
  1. 在 WordPress 執行個體的 Lightsail 瀏覽器型SSH工作階段中,按下 Enter 以繼續您的 Let’s Encrypt SSL憑證請求。如果成功,則會顯示與以下螢幕擷取畫面類似的回應:

    成功的 Let's Encrypt 憑證請求。

    訊息會確認您的憑證、鏈和金鑰檔案存放於 /etc/letsencrypt/live/domain/ 目錄。務必以您的網域取代 domain,例如 /etc/letsencrypt/live/example.com/

  2. 記下訊息中指定的過期日期。您可將其用於在該日期續約憑證。

    Let's Encrypt 憑證續約日期。
  3. 現在您已擁有 Let’s Encrypt SSL憑證,請繼續本教學課程的下一節

在 WordPress 執行個體的 Apache 伺服器目錄中建立 Let’s Encrypt SSL憑證檔案的連結。此外,請備份現有的憑證,以防您稍後需要用到。

若要在 Apache 伺服器目錄建立至 Let's Encrypt 憑證檔案的連結
  1. 在 WordPress 執行個體的 Lightsail 瀏覽器型SSH工作階段中,輸入下列命令來停止基礎服務:

    sudo /opt/bitnami/ctlscript.sh stop

    您應該會看到類似以下的回應:

    執行個體服務已停止。
  2. 輸入下列命令以設定網域的環境變數。您可以更有效率地複製和貼上命令,藉此連結至憑證檔案。請務必以註冊的網域名稱取代 domain

    DOMAIN=domain

    範例:

    DOMAIN=example.com
  3. 輸入下列命令確認變數傳回正確的值:

    echo $DOMAIN

    您應該會看到類似以下的結果:

    確認網域環境變數。
  4. 個別輸入下列命令,以重新命名現有的憑證檔案做為備份。請參閱本教學課程開頭的重要區塊,以取得有關不同發行版本和檔案結構的資訊。

    • Debian Linux 發行版本

      方法 A (使用系統套件的 Bitnami 安裝):

      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

      方法 B (獨立的 Bitnami 安裝):

      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
    • 對於使用 Ubuntu Linux 發行版本的較舊執行個體:

      sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.crt /opt/bitnami/apache/conf/bitnami/certs/server.crt.old
      sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.key /opt/bitnami/apache/conf/bitnami/certs/server.key.old
      sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.csr /opt/bitnami/apache/conf/bitnami/certs/server.csr.old
  5. 個別輸入下列命令,以在 Apache 伺服器目錄中建立至您 Let's Encrypt 憑證檔案的連結:請參閱本教學課程開頭的重要區塊,以取得有關不同發行版本和檔案結構的資訊。

    • Debian Linux 發行版本

      方法 A (使用系統套件的 Bitnami 安裝):

      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

      方法 B (獨立的 Bitnami 安裝):

      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
    • 對於使用 Ubuntu Linux 發行版本的較舊執行個體:

      sudo ln -s /etc/letsencrypt/live/$DOMAIN/privkey.pem /opt/bitnami/apache/conf/bitnami/certs/server.key
      sudo ln -s /etc/letsencrypt/live/$DOMAIN/fullchain.pem /opt/bitnami/apache/conf/bitnami/certs/server.crt
  6. 輸入下列命令,啟動您先前停止的基礎服務:

    sudo /opt/bitnami/ctlscript.sh start

    您應該會看到類似以下的結果:

    執行個體服務已啟動。

    WordPress 執行個體的SSL憑證檔案現在位於正確的目錄中。

  7. 繼續前往本教學課程的下一節

步驟 8:使用 Really Simple SSL外掛程式將SSL憑證與您的 WordPress 網站整合

將 Really Simple SSL 外掛程式安裝到您的 WordPress 網站,並使用它來整合SSL憑證。Really Simple SSL也會HTTP將 設定為HTTPS重新導向,以確保造訪您網站的使用者一律處於HTTPS連線狀態。

使用 Really Simple SSL 外掛程式將SSL憑證與您的 WordPress 網站整合
  1. 在 WordPress 執行個體的 Lightsail 瀏覽器型SSH工作階段中,輸入下列命令,將 wp-config.phphtaccess.conf 檔案設定為可寫入。Really Simple SSL外掛程式將寫入 wp-config.php 檔案以設定您的憑證。

    • 對於使用 Debian Linux 發行版本的較新執行個體:

      sudo chmod 666 /opt/bitnami/wordpress/wp-config.php && sudo chmod 666 /opt/bitnami/apache/conf/vhosts/htaccess/wordpress-htaccess.conf
    • 對於使用 Ubuntu Linux 發行版本的較舊執行個體:

      sudo chmod 666 /opt/bitnami/apps/wordpress/htdocs/wp-config.php && sudo chmod 666 /opt/bitnami/apps/wordpress/conf/htaccess.conf
  2. 開啟新的瀏覽器視窗,並登入 WordPress 執行個體的管理儀表板。

  3. 從左側導覽窗格中選擇 Plugins (外掛程式)。

  4. 從外掛程式頁面最上方選擇 Add New (新增)。

    在 中新增外掛程式 WordPress。
  5. 搜尋真正簡單的 SSL

  6. 選擇搜尋結果中真正簡單的SSL外掛程式旁的立即安裝

    的真正簡單SSL外掛程式 WordPress。
  7. 完成安裝之後,選擇 Activate (啟用)。

  8. 在出現的提示中,選擇繼續,啟用 SSL!您可能會重新導向至執行個體 WordPress管理儀表板的登入頁面。

    您的 WordPress 執行個體現在已設定為使用SSL加密。此外,您的 WordPress 執行個體現在已設定為自動將連線從 重新導向HTTP至 HTTPS。當訪客前往 時http://example.com,他們會自動重新導向至加密的HTTPS連線 (即 https://example.com)。

步驟 9:每 90 天續約 Let's Encrypt 憑證

Let's Encrypt 憑證有效期為 90 天。您可以憑證過期前 30 天內進行續約。若要更新 Let's Encrypt 憑證,請執行原始命令來取得憑證。重複本教學課程之請求讓我們加密SSL萬用字元憑證一節中的步驟。