本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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:完成先決條件
如果您尚未完成,請完成下列先決條件:
-
在 Lightsail 中建立 WordPress 執行個體。若要進一步了解,請參閱啟動和設定 WordPress 執行個體。
-
註冊網域名稱,並取得管理存取以編輯其 DNS 記錄。若要進一步了解,請參閱 DNS。
注意
建議您使用 DNS 區域管理網域的 Lightsail DNS 記錄。若要進一步了解,請參閱建立 DNS 區域以管理網域的 DNS 記錄。
-
在 Lightsail 主控台使用瀏覽器型 SSH 終端機執行此教學課程中的步驟。然而,您也可以使用自己的 SSH 用戶端,例如 PuTTY。若要進一步了解如何設定 PuTTY,請參閱下載和設定 PuTTY 以使用 SSH 進行連線。
完成先決條件後,請繼續前往本教學課程的下一節。
步驟 2:在 Lightsail 執行個體安裝 Certbot
Certbot 是用於向 Let's Encrypt 請求憑證並將其部署到 Web 伺服器的用戶端。Let's Encrypt 使用 ACME 協助發出憑證,而 Certbot 是一種啟用 ACME 的用戶端,可與 Let's Encrypt 互動。
在 Lightsail 執行個體安裝 Certbot
-
登入 Lightsail 主控台
。 -
在Lightsail首頁的執行個體索引標籤上,選擇您要連線之執行個體的 SSH 快速連線圖示。
-
在 Lightsail瀏覽器型 SSH 工作階段連接後,輸入下列命令以更新執行個體上的套件:
sudo apt-get update -
輸入下列命令以安裝軟體屬性套件。Certbot 的開發人員使用個人套件封存 (PPA) 來分發 Certbot。軟體屬性套件可讓 PPA 的使用更有效率。
sudo apt-get install software-properties-common -y注意
如果您在執行
sudo apt-get install命令Could not get lock時發生錯誤,請等待約 15 分鐘,然後再試一次。此錯誤可能是由使用 Apt 套件管理工具來安裝全自動升級的 cron 任務所造成。 -
輸入下列命令更新 apt 以包含新的儲存庫:
sudo apt-get update -y -
輸入下列命令以安裝 Certbot:
sudo apt-get install certbot -yCertbot 現在已安裝於您的 Lightsail 執行個體。
讓瀏覽器型 SSH 終端機視窗保持開啟 - 稍後您會在此教學課程中回到此處。繼續前往本教學課程的下一節。
步驟 3:請求 Let’s Encrypt SSL 萬用字元憑證
開始從 Let's Encrypt 請求憑證的程序。使用 Certbot (請求萬用字元憑證) 可讓您針對網域及其子網域使用單一憑證。例如,單一萬用字元憑證適用於 example.com 頂層網域,以及 blog.example.com、stuff.example.com 子網域。
請求 Let's Encrypt SSL 萬用字元憑證
-
在本教學課程上一個步驟中使用的相同瀏覽器型 SSH 終端機視窗中,輸入下列命令來設定網域的環境變數。請務必將
網域取代為您已註冊網域名稱的名稱。DOMAIN=domainWILDCARD=*.$DOMAIN範例:
DOMAIN=example.com WILDCARD=*.$DOMAIN -
輸入下列命令確認變數傳回正確的值:
echo $DOMAIN && echo $WILDCARD您應該會看到類似以下的結果:
-
在互動式模式中輸入下列命令啟動 Certbot。此命令會通知 Certbot 使用手動授權方法搭配 DNS 查問以驗證網域所有權。這會為您的頂層網域及其子網域請求萬用字元憑證。
sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly -
出現提示時輸入您的電子郵件地址,因為它用於續約和安全性通知。
-
閱讀 Let's Encrypt 服務條款。完成後,如果您同意,請按 Y。如果您不同意,則無法取得 Let's Encrypt 憑證。
-
根據分享您電子郵件地址的提示和關於您 IP 地址被記錄的警告做出回應。
-
讓我們加密現在提示您驗證您擁有指定的網域。要這麼做,請新增 TXT 記錄至網域的 DNS 記錄。這會提供一組 TXT 記錄值,如以下範例所示:
注意
Let's Encrypt 可能會提供一或多個必須用於驗證的 TXT 記錄。在此範例中,我們有兩個 TXT 記錄可用於驗證。
讓 Lightsail 瀏覽器型 SSH 工作階段保持開啟 - 稍後您會在此教學課程中回到此處。繼續前往本教學課程的下一節。
步驟 4:新增 TXT 記錄至域的 DNS 區域
將 TXT 記錄新增至網域的 DNS 區域可驗證您是否擁有網域。為了示範,我們使用 Lightsail DNS 區域。然而,通常由網域註冊商託管的其他 DNS 區域可能會採取類似步驟。
注意
若要進一步了解如何為您的網域建立 Lightsail DNS 區域,請參閱在 中建立 DNS 區域以管理網域的 DNS 記錄Lightsail。
在 中將 TXT 記錄新增至網域的 DNS 區域 Lightsail
-
在左側導覽窗格中,選擇網域和 DNS。
-
在頁面的 DNS zones (DNS 區域) 部分,選擇您在 Certbot 憑證請求中所指定網域的 DNS 區域。
-
在 DNS 區域編輯器中,選擇 DNS records (DNS 記錄)。
-
選擇 Add record (新增記錄)。
-
在 Record type (記錄類型) 下拉式選單中,選擇 TXT record (TXT 記錄)。
-
將 Let's Encrypt 憑證請求指定的值輸入至 Record name and Responds with 欄位。
注意
Lightsail 主控台會預先填入您網域的頂點部分。例如,如果您要新增
子網域,則只需在文字方塊中輸入_acme-challenge.example.com,當您儲存記錄時,Lightsail 會新增_acme-challenge.example.com部分。 -
選擇儲存。
-
重複步驟 4 到 7,新增 Let's Encrypt 憑證請求指定的第二組 TXT 記錄。
保持主 Lightsail 控台瀏覽器視窗開啟 - 稍後您會在此教學課程中返回此處。繼續前往本教學課程的下一節。
步驟 5:確認 TXT 記錄已傳播
使用 MxToolbox 公用程式來確認 TXT 記錄已傳播到網際網路的 DNS。DNS 記錄傳輸可能需要一些時間,這取決於您的 DNS 託管提供者,以及設定的 DNS 記錄存留時間 (TTL)。在繼續 Certbot 憑證請求之前,請務必完成此步驟,並確認 TXT 記錄已傳播。否則,您的憑證請求會失敗。
確認 TXT 記錄已傳播至網際網路的 DNS
-
開啟新的瀏覽器視窗並前往 https://mxtoolbox.com/TXTLookup.aspx
。 -
將以下文字輸入文字方塊。請務必將
網域取代為您的網域。_acme-challenge.domain範例:
_acme-challenge.example.com
-
選擇 TXT Lookup (TXT 查詢) 以執行檢查。
-
這會產生以下其中一個回應:
-
如果您的 TXT 記錄已傳播到網際網路的 DNS,您會看到類似下列螢幕擷取畫面所示的回應。關閉瀏覽器視窗,並繼續前往本教學課程的下一節。
-
如果您的 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 憑證請求
-
在 WordPress 執行個體的Lightsail瀏覽器型 SSH 工作階段中,按下 Enter 以繼續您的 Let's Encrypt SSL 憑證請求。如果成功,則會顯示與以下螢幕擷取畫面類似的回應:
訊息會確認您的憑證、鏈和金鑰檔案存放於
/etc/letsencrypt/live/目錄。請務必將domain/網域取代為您的網域,例如/etc/letsencrypt/live/example.com/。 -
記下訊息中指定的過期日期。您可將其用於在該日期續約憑證。
-
現在您已擁有 Let's Encrypt SSL 憑證,請繼續本教學課程的下一節。
步驟 7:在 Apache 目錄中建立憑證檔案連結
在 WordPress 執行個體的 Apache 伺服器目錄中建立 Let's Encrypt SSL 憑證檔案的連結。此外,請備份現有的憑證,以防您稍後需要用到。
在 Apache 伺服器目錄中建立 Let's Encrypt 憑證檔案的連結
-
在 Lightsail 以瀏覽器為基礎的 WordPress 執行個體 SSH 工作階段中,輸入下列命令以停止基礎服務:
sudo systemctl stop apache2 -
輸入下列命令以設定網域的環境變數。請務必將
網域取代為您已註冊網域名稱的名稱。DOMAIN=domain範例:
DOMAIN=example.com注意
如果您在步驟 3 中設定
DOMAIN變數之後關閉瀏覽器型 SSH 終端機視窗,請DOMAIN=再次執行,將example.comexample.com取代為您的網域。 -
輸入下列命令以確認變數傳回正確的值:
echo $DOMAIN
-
個別輸入下列命令來備份現有的憑證檔案:
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 -
個別輸入下列命令,以在 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 -
輸入下列命令,啟動您先前停止的基礎服務:
sudo systemctl start apache2您的 WordPress 執行個體的 SSL 憑證檔案現在已位於正確的目錄。
-
繼續前往本教學課程的下一節。
步驟 8:使用 Really Simple SSL 外掛程式設定 HTTPS 重新導向
在 WordPress 網站上安裝 Really Simple SSL 外掛程式,並使用它來整合 SSL 憑證。Really Simple SSL 也會設定 HTTP 至 HTTPS 重新引導,以確保存取您網站的使用者一律在 HTTPS 連線上。
使用 Really Simple SSL 外掛程式整合 SSL 憑證與您的 WordPress 網站
-
在 WordPress 執行個體的Lightsail瀏覽器型 SSH 工作階段中,輸入下列命令將
wp-config.php檔案設定為可寫入。Really Simple SSL 外掛程式會寫入wp-config.php檔案以設定您的憑證。sudo chmod 666 /var/www/wp-config.php -
開啟新的瀏覽器視窗,並登入您 WordPress 執行個體的管理儀表板。
注意
如需詳細資訊,請參閱啟動和設定 WordPress 執行個體。
-
從左側導覽窗格中選擇 Plugins (外掛程式)。
-
從外掛程式頁面頂端選擇新增外掛程式。
-
搜尋 Really Simple SSL (Really Simple SSL)。
-
選擇搜尋結果中 Really Simple SSL 外掛程式旁邊的 Install Now (立即安裝)。
-
安裝完成後,請選擇啟用。
-
在系統提示時,選擇 Go ahead, activate SSL! (上吧,啟用 SSL!) 您可能會重新導向至 WordPress 執行個體管理儀表板的登入頁面。
-
返回 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 執行個體。