View a markdown version of this page

使用 Let's Encrypt 和 Certbot 在 WordPress 執行個體上啟用 HTTPS - Amazon Lightsail

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

使用 Let's Encrypt 和 Certbot 在 WordPress 執行個體上啟用 HTTPS

提示

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

使用Amazon Lightsail負載平衡器,您可以使用 SSL/TLS 保護您的網站和應用程式。然而,使用 Lightsail 負載平衡器通常可能不會是正確的選擇。或許您的網站不需要負載平衡器提供的可擴展性或容錯能力,或者您是要最佳化成本。

在後者的情況中,您可能會考量使用 Let's Encrypt 以取得免費的 SSL 憑證。本教學課程說明如何使用 Certbot 請求 Let's Encrypt 萬用字元憑證,並使用 Really Simple SSL 外掛程式將其與您的 WordPress 執行個體整合。

內容

步驟 1:完成先決條件

如果您尚未完成,請完成下列先決條件:

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

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

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

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

  2. 在Lightsail首頁的執行個體索引標籤上,選擇您要連線之執行個體的 SSH 快速連線圖示。

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

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

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

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

  5. 輸入下列命令更新 apt 以包含新的儲存庫:

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

    sudo apt-get install certbot -y

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

讓瀏覽器型 SSH 終端機視窗保持開啟 - 稍後您會在此教學課程中回到此處。繼續前往本教學課程的下一節

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

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

請求 Let's Encrypt SSL 萬用字元憑證
  1. 在本教學課程上一個步驟中使用的相同瀏覽器型 SSH 終端機視窗中,輸入下列命令來設定網域的環境變數。請務必將網域取代為您已註冊網域名稱的名稱。

    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 服務條款。完成後,如果您同意,請按 Y。如果您不同意,則無法取得 Let's Encrypt 憑證。

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

  7. 讓我們加密現在提示您驗證您擁有指定的網域。要這麼做,請新增 TXT 記錄至網域的 DNS 記錄。這會提供一組 TXT 記錄值,如以下範例所示:

    注意

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

    Let's Encrypt 憑證的 TXT 記錄。

讓 Lightsail 瀏覽器型 SSH 工作階段保持開啟 - 稍後您會在此教學課程中回到此處。繼續前往本教學課程的下一節

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

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

注意

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

在 中將 TXT 記錄新增至網域的 DNS 區域 Lightsail
  1. 在左側導覽窗格中,選擇網域和 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 and Responds with 欄位。

    注意

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

  7. 選擇儲存

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

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

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

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

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

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

    _acme-challenge.domain

    範例:

    _acme-challenge.example.com
    MXToolbox TXT 記錄查詢。
  3. 選擇 TXT Lookup (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/ 目錄。請務必將網域取代為您的網域,例如 /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. 在 Lightsail 以瀏覽器為基礎的 WordPress 執行個體 SSH 工作階段中,輸入下列命令以停止基礎服務:

    sudo systemctl stop apache2
  2. 輸入下列命令以設定網域的環境變數。請務必將網域取代為您已註冊網域名稱的名稱。

    DOMAIN=domain

    範例:

    DOMAIN=example.com
    注意

    如果您在步驟 3 中設定DOMAIN變數之後關閉瀏覽器型 SSH 終端機視窗,請DOMAIN=example.com再次執行,將 example.com 取代為您的網域。

  3. 輸入下列命令以確認變數傳回正確的值:

    echo $DOMAIN
    確認網域環境變數。
  4. 個別輸入下列命令來備份現有的憑證檔案:

    export BACKUP_PATH=/opt/aws/wordpress sudo cp /etc/ssl/certs/ssl-cert-snakeoil.pem $BACKUP_PATH/ssl-cert-snakeoil.pem.backup sudo cp /etc/ssl/private/ssl-cert-snakeoil.key $BACKUP_PATH/ssl-cert-snakeoil.key.backup
  5. 個別輸入下列命令,以在 Apache 目錄中建立 Let's Encrypt 憑證檔案的連結:

    sudo ln -sf /etc/letsencrypt/live/$DOMAIN/fullchain.pem /etc/ssl/certs/ssl-cert-snakeoil.pem sudo ln -sf /etc/letsencrypt/live/$DOMAIN/privkey.pem /etc/ssl/private/ssl-cert-snakeoil.key
  6. 輸入下列命令,啟動您先前停止的基礎服務:

    sudo systemctl start apache2

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

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

步驟 8:使用 Really Simple SSL 外掛程式設定 HTTPS 重新導向

在 WordPress 網站上安裝 Really Simple SSL 外掛程式,並使用它來整合 SSL 憑證。Really Simple SSL 也會設定 HTTP 至 HTTPS 重新引導,以確保存取您網站的使用者一律在 HTTPS 連線上。

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

    sudo chmod 666 /var/www/wp-config.php
  2. 開啟新的瀏覽器視窗,並登入您 WordPress 執行個體的管理儀表板。

    注意

    如需詳細資訊,請參閱啟動和設定 WordPress 執行個體

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

  4. 外掛程式頁面頂端選擇新增外掛程式。

    在 WordPress 管理儀表板中新增外掛程式。
  5. 搜尋 Really Simple SSL (Really Simple SSL)

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

    WordPress 外掛程式搜尋結果中的真正簡單的 SSL 外掛程式。
  7. 安裝完成後,請選擇啟用

  8. 在系統提示時,選擇 Go ahead, activate SSL! (上吧,啟用 SSL!) 您可能會重新導向至 WordPress 執行個體管理儀表板的登入頁面。

  9. 返回 WordPress 執行個體的Lightsail瀏覽器型 SSH 工作階段,然後輸入下列命令以還原wp-config.php檔案的限制性許可。此檔案包含不可讓世界讀取的資料庫登入資料和安全金鑰。

    sudo chmod 640 /var/www/wp-config.php

您的 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 萬用字元憑證一節中的步驟。

注意

Amazon Lightsail 引導式工作流程會自動處理憑證續約。若要避免手動續約憑證,請切換到引導式工作流程。如需詳細資訊,請參閱啟動和設定 WordPress 執行個體