教程:在你的 Light WordPress sail 实例中使用 “让我们加密 SSL 证书” - Amazon Lightsail

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

教程:在你的 Light WordPress sail 实例中使用 “让我们加密 SSL 证书”

提示

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

Amazon Lightsail 可以使用 Lightsail 负载均衡器使用 SSL/TLS 轻松保护您的网站和应用程序。但是,使用 Lightsail 负载均衡器通常可能不是正确的选择。您的站点可能不需要负载均衡器提供的可扩展性或容错能力,或者您可能针对成本进行了优化。在后一种情况下,您可能会考虑使用 Let's Encrypt 获取免费 SSL 证书。如果是这样,一切都没有问题。您可以将这些证书与 Lightsail 实例集成。

通过本指南,您将学习如何使用 Certbot 申请 Let's Encrypt 通配符证书,并使用 Really Simple SSL 插件将其与您的 WordPress 实例集成。

  • 2020 年 7 月,Bitnami 实例使用的 Linux 发行版从 Ubuntu 更改为 Debian。由于此更改,本教程中的某些步骤将因实例的 Linux 发行版而异。在更改后创建的所有 Bitnami 蓝图实例都将使用 Debian Linux 发行版。在更改之前创建的实例将继续使用 Ubuntu Linux 发行版。要检查实例的发行版,请运行 uname -a 命令。响应会将 Ubuntu 或 Debian 显示为实例的 Linux 发行版。

  • 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

确定您的 WordPress实例的 Linux 发行版

2020 年 7 月,Bitnami 实例使用的 Linux 发行版从 Ubuntu 更改为 Debian。在更改后创建的所有 Bitnami 蓝图实例都将使用 Debian Linux 发行版。在更改之前创建的实例将继续使用 Ubuntu Linux 发行版。由于此更改,本教程中的某些步骤将因实例的 Linux 发行版而异。您必须确定实例的 Linux 发行版,以便了解要使用本教程中的哪些步骤。要检查实例使用的 Linux 发行版,请运行 uname -a 命令。响应会将 Ubuntu 或 Debian 显示为实例的 Linux 发行版。

确定适合实例的教程方法

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:完成先决条件

请完成以下先决条件(如果尚未完成):

  • 在 Lightsail 中创建一个 WordPress 实例。要了解更多信息,请参阅创建实例

  • 注册一个域名,并获取管理访问权限以编辑其 DNS 记录。要了解更多信息,请参阅 DNS

    我们建议您使用 Lightsail DNS 区域来管理域名的 DNS 记录。要了解更多信息,请参阅创建 DNS 区域以管理域的 DNS 记录

  • 在 Lightsail 控制台中使用基于浏览器的 SSH 终端来执行本教程中的步骤。但是,您也可以使用自己的 SSH 客户端(如 PuTTY)。要了解有关配置 PuTTY 的更多信息,请参阅在 Amazon Lightsail 中下载并设置 PuTTY 以使用 SSH 进行连接

完成先决条件后,请继续执行本教程的下一部分

第 2 步:在你的 Lightsail 实例上安装 Certbot

Certbot 是用于从 Let's Encrypt 请求证书并将其部署到 Web 服务器的客户端。Let's Encrypt 使用 ACME 协议颁发证书,而 Certbot 是与 Let's Encrypt 交互且启用 ACME 的客户端。

在你的 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
    注意

    如果您在运行 sudo apt-get install 命令时遇到 Could not get lock 错误,请等待大约 15 分钟,然后重试。此错误可能是由 cron 作业导致的,该作业使用 Apt 包管理工具来安装无人参与升级。

  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.com 以及 stuff.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 区域,请参阅在 L ightsail 中创建 DNS 区域来管理您的域名的 DNS 记录

在 Lightsail 中向你的域名的 DNS 区域添加 TXT 记录
  1. 在 Lightsail 主页中,选择 Domains & DNS(域和 DNS)选项卡。

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

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

  4. 选择添加记录

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

确认 TXT 记录已传播到 Internet 的 DNS
  1. 打开一个新浏览器窗口,然后转至 https://mxtoolbox.com/TXTLookup.aspx

  2. 在文本框中输入以下文本。请务必将 domain 替换为您的域。

    _acme-challenge.domain

    例如:

    _acme-challenge.example.com
    
            MxToolbox TXT 记录查找。
  3. 选择 TXT Lookup (TXT 查找) 以运行检查。

  4. 此时将出现以下任一响应:

    • 如果您的 TXT 记录已传播到 Internet 的 DNS,您将看到类似于以下屏幕截图中所示的响应。关闭浏览器窗口,然后继续执行本教程的下一部分

      
                确认 TXT 记录已传播。
    • 如果您的 TXT 记录尚未传播到 Internet 的 DNS,您会看到 DNS Record not found (未找到 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 服务器目录中创建指向让我们加密 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 网站集成

将 Really Simple 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. 选择“Plugins (插件)”页面顶部的 Add New (添加新插件)

    
            在中添加新插件 WordPress。
  5. 搜索 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 通配符证书部分中的步骤。