View a markdown version of this page

使用 Let's Encrypt 和 Certbot 在您的 WordPress 实例上启用 HTT - Amazon Lightsail

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Let's Encrypt 和 Certbot 在您的 WordPress 实例上启用 HTT

提示

Amazon Lightsail 提供指导性工作流程,可在您的实例上自动安装、配置和续订 Let's Encrypt 证书。 WordPress 我们强烈建议使用该工作流程,而不是按照本教程中的手动步骤操作。有关更多信息,请参阅启动和配置实 WordPress 例

借助亚马逊 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 是一个与 Let's Encrypt 进行交互的 ACME-enabled 客户端。

在您的 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.com 以及 stuff.example.com 子域。

申请 Let's Encrypt SSL 通配符证书
  1. 在本教程的上一步中使用的基于浏览器的 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. 阅读 “让我们加密” 服务条款。完成后,如果您同意,请按 Y。如果您不同意,则无法获得 Let's Encrypt 证书。

  6. 针对共享您电子邮件地址的提示以及有关您的 IP 地址已被记录的警告相应地做出响应。

  7. Let's Encrypt 现在会提示您验证您是否拥有指定的域名。您可以通过将 TXT 记录添加到域的 DNS 记录执行此操作。系统会提供一组 TXT 记录值,如以下示例所示:

    注意

    Let's Encrypt 可以提供您必须用于验证的单个或多个 TXT 记录。在本示例中,向我们提供了两个 TXT 记录用于验证。

    Let's Encrypt 证书的 TXT 记录。

保持基于 Lightsail 浏览器的 SSH 会话处于打开状态,您将在本教程的后面部分返回该会话。继续执行本教程的下一部分

步骤 4:将 TXT 记录添加到域的 DNS 区域

向域名的 DNS 区域添加 TXT 记录可验证您是否拥有该域。出于演示目的,我们使用 Lightsail DNS 区域。但是,该步骤可能类似于通常由域注册商托管的其他 DNS 区域。

注意

要详细了解如何为您的域名创建 Lightsail DNS 区域,请参阅创建 DNS 区域以在 Lightsail 中管理您的域的 DNS 记录。

在 Lightsail 中将 TXT 记录添加到域名的 DNS 区域
  1. 在左侧导航窗格中,选择域和 DNS

  2. 在页面的 DNS 区域部分下,选择您在 Certbot 证书请求中指定的域的 DNS 区域。

  3. 在 DNS 区域编辑器中,选择 DNS records(DNS 记录)。

  4. 选择添加记录

  5. Record type(记录类型)下拉菜单中,选择 TXT record(TXT 记录)。

  6. 在 “记录名称” 和 “回应” 字段中输入 “让我们加密” 证书请求中指定的值。

    注意

    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)。请务必完成此步骤,并确认您的 TXT 记录已传播,然后再继续执行 Certbot 证书请求。否则,您的证书请求将失败。

确认 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 记录” 响应。确认您向域名的 DNS 区域添加了正确的 DNS 记录。如果您添加了正确的记录,请稍等片刻,让您的域名的 DNS 记录传播,然后再次运行 TXT 查询。

第 6 步:完成 Let's Encrypt SSL 证书请求

返回您的 WordPress 实例的基于 Lightsail 浏览器的 SSH 会话并完成 “让我们加密” 证书请求。Certbot 将您的 SSL 证书、链和密钥文件保存到实例上的特定目录中。 WordPress

完成 “让我们加密 SSL 证书请求”
  1. 在您的 WordPress 实例的基于 Lightsail 浏览器的 SSH 会话中,按 En ter 继续您的 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 服务器目录中创建指向 “让我们加密 SSL 证书文件” 的链接。此外,请备份现有证书,以便之后需要。

在 Apache 服务器目录中创建指向 Let's Encrypt 证书文件的链接
  1. 在您的 WordPress 实例的基于 Lightsail 浏览器的 SSH 会话中,输入以下命令以停止基础服务:

    sudo systemctl stop apache2
  2. 输入以下命令,为您所在域设置环境变量。请务必将 domain 替换为您注册的域名。

    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 网站上安装真正简单的 SSL 插件,并使用它来集成 SSL 证书。Really Simple SSL 还会配置 HTTP 到 HTTPS 重新导向,从而确保访问您站点的用户始终使用 HTTPS 连接。

使用 Really Simple SSL 插件将 SSL 证书与您的 WordPress 网站集成
  1. 在您的 WordPress 实例的基于 Lightsail 浏览器的 SSH 会话中,输入以下命令将您的wp-config.php文件设置为可写入。真正简单的 SSL 插件写入wp-config.php文件以配置您的证书。

    sudo chmod 666 /var/www/wp-config.php
  2. 打开一个新的浏览器窗口并登录到您的 WordPress 实例的管理控制面板。

    注意

    有关更多信息,请参阅启动和配置实 WordPress 例

  3. 从左侧导航窗格中选择 Plugins (插件)

  4. 从 “插件” 页面的顶部选择 “添加新插件”。

    在 WordPress 管理仪表板中添加新插件。
  5. 搜索 Really Simple SSL

  6. 选择搜索结果中 Really Simple SSL 插件旁边的 Install Now (立即安装)

    插件搜索结果中的SSL WordPress 插件非常简单。
  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 证书,请运行用于获取它们的原始命令。重复本教程的 “申请让我们加密 SSL 通配符证书” 部分中的步骤。

注意

亚马逊 Lightsail 指导工作流程会自动处理证书续订。为避免手动续订证书,请切换到指导式工作流程。有关更多信息,请参阅启动和配置实 WordPress 例