教學課程:搭配 Lightsail WordPress 執行個體使用加密 SSL 憑證 - Amazon Lightsail

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

教學課程:搭配 Lightsail WordPress 執行個體使用加密 SSL 憑證

提示

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

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

透過本指南,您將學習如何使用 Certbot 申請讓我們加密萬用字元憑證,並使用真正簡單的 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 提供了一個更自動化的過程,它使用了 Bitnami HTTPS 配置(bncert)工具,該工具通常預先安裝在 Lightsail 中的實例上 WordPress。我們強烈建議您使用該工具,而非依照本教學課程中的手動步驟。本教學課程是在 bncert 工具可供使用之前完成。如需有關使用此bncert工具的詳細資訊,請參閱在 Amazon Lightsail 中在 WordPress執行個體上啟用 HTTPS

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

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:在您的執行個體上安裝 Certbot

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

若要在您的執行個體上安裝切爾特博特
  1. 登入主 Li ghtsail 台

  2. 在 Lightsail 首頁上,針對您要連線的執行個體選擇安全殼層快速連線圖示。

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

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

    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 已安裝在您的執行個體上。

  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 記錄可用於驗證。

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

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

新增 TXT 記錄至網域的 DNS 區域可驗證您擁有網域。為了進行示範,我們使用 Lightsail DNS 區域。然而,通常由網域註冊商託管的其他 DNS 區域可能會採取類似步驟。

注意

若要深入瞭解如何為您的網域建立 Lightsail DNS 區域,請參閱在 Lightsail 中建立 DNS 區域以管理網域的 DNS 記錄

若要將 TXT 記錄新增至您網域的 DNS 區 Lightsail
  1. 選擇 Lightsail 首頁上的 Domains & DNS (網域和 DNS) 索引標籤。

  2. 在頁面的 DNS zones (DNS 區域) 部分,選擇您在 Certbot 憑證請求中所指定網域的 DNS 區域。

  3. 在 DNS 區域編輯器中,選擇 DNS records (DNS 記錄)。

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

  5. Record type (記錄類型) 下拉式選單中,選擇 TXT record (TXT 記錄)。

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

    注意

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

  7. 選擇儲存

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

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

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

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

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

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

    _acme-challenge.domain

    範例:

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

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

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

      
                確認 TXT 記錄已傳播。
    • 如果 TXT 記錄未傳播至網際網路的 DNS,您會看見 DNS Record not found (找不到 DNS 記錄) 回應。確認您已新增正確 DNS 記錄至網域的 DNS 區域。如果您新增了正確記錄,請再等待片刻讓網域的 DNS 記錄傳播,接著再次執行 TXT 查詢。

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

返回 WordPress 執行個體的 Lightsail 瀏覽器型 SSH 工作階段,並完成「讓我們加密」憑證要求。Certbot 會將您的 SSL 憑證、鏈結和金鑰檔案儲存到執行個體上的 WordPress 特定目錄中。

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

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

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

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

    
            Let's Encrypt 憑證續約日期。
  3. 既然您擁有 Let’s Encrypt 憑證,就請繼續前往本教學課程的下一節

在 WordPress 執行個體上的 Apache 伺服器目錄中建立「讓我們加密 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:使用非常簡單的 SSL 插件將 SSL 證書與您的 WordPress 網站集成

將真正簡單的 SSL 插件安裝到您的 WordPress 網站,並使用它來集成 SSL 證書。Really Simple SSL 也會設定 HTTP 至 HTTPS 重新引導,以確保存取您網站的使用者一律在 HTTPS 連線上。

使用非常簡單的 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. 搜尋 Really Simple SSL (Really Simple SSL)

  6. 選擇搜尋結果中 Really Simple SSL 外掛程式旁邊的 Install Now (立即安裝)。

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

  8. 在系統提示時,選擇 Go ahead, activate SSL! (上吧,啟用 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 憑證,請執行原始命令來取得憑證。重複本教學課程的請求 Let's Encrypt SSL 萬用字元憑證一節中的步驟。