如何在 Amazon Lightsail 中安装通配符 Let's Encrypt SSL 证书?

3 分钟阅读
0

我想在 Amazon Lightsail 实例中为我的网站安装通配符 SSL 证书。

简短描述

以下解决方法涵盖了为托管在不使用 Bitnami 堆栈的 Lightsail 实例中的网站安装通配符 Let's Encrypt SSL 证书。这些实例蓝图的示例包括 Amazon Linux 2 或 Ubuntu。如果您的实例蓝图不同或想要安装标准证书,请参阅以下一项内容:

解决方法

**注意:**在开始之前,请安装 Certbot 工具。有关安装说明,请参阅如何在我的 Lightsail 实例中安装 Certbot 软件包以安装 Let's Encrypt 证书?

在 Lightsail 实例上安装通配符 Let's Encrypt SSL 证书的方法取决于您域的 DNS 提供商。首先,验证您的 DNS 提供商是否出现在 Certbot 网站上的 DNS Plugins 中。以下方法说明了如何在服务器上安装证书。您必须手动完成其他步骤。例如,您必须将服务器配置为使用证书,并且必须设置 HTTPS 重定向。

如果您的域使用的是列出的 DNS 提供商之一

在以下示例中,DNS 提供商为 Amazon Route 53。有关支持的其他 DNS 提供商的说明,请参阅 Certbot 网站上的 DNS Plugins

  1. 创建具有编程访问权限的 AWS Identity and Access Management (IAM) 用户。有关 Certbot 完成 DNS 质询所需的最低 IAM 用户权限,请参阅 Certbot 网站上的 certbot-dns-route-53

  2. 要在 nano 编辑器中打开 /root/.aws/credentials 文件,请运行以下命令:

    sudo mkdir /root/.aws
    sudo nano /root/.aws/credentials
  3. 将以下行复制到文件中:

    [default]
    aws_access_key_id = AKIA************E
    aws_secret_access_key = 1yop**************************l

    **注意:**将 aws_access_key_id 替换为在第 1 步中创建的访问密钥 ID。

  4. 要保存文件,请按 Ctrl + X,然后按 Y,最后按 ENTER

  5. 在服务器上创建 Let's Encrypt 证书。如果您的域使用 Amazon Route 53 作为 DNS 提供商,请运行以下命令:

    sudo certbot certonly --dns-route53 -d example.com -d *.example.com

    **注意:**将 example.com 替换为您的域名。

  6. 在 Certbot 生成 SSL 证书后,您会收到 Successfully received certificate 消息。还会提供证书和密钥文件的位置。将这些文件位置复制到文本文件中,以便在第 8 步中使用。

  7. 设置自动证书续订。
    如果使用 snapd 安装 Certbot 软件包,则会在 systemd 计时器或 cronjob 中自动配置续订。
    如果操作系统发行版是 Amazon Linux 2 或 FreeBSD,则不使用 snapd 安装 Certbot 软件包。要手动配置续订,请运行以下命令:

    echo "30 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null
  8. 现在,您已经安装了证书并且设置了续订。但是,您还必须配置 Web 服务器才能使用此证书,并且还必须设置 HTTPS 重定向。配置取决于您实例的 Web 服务器设置。有关配置说明,请参阅您的 Web 服务文档。

如果您的域未使用列出的 DNS 提供商之一

**注意:**此方法不支持自动证书续订。

在以下步骤中,您要在域的 DNS 提供商中添加 TXT 记录。此过程可能需要一些时间。最佳做法是在 Linux GNU Screen 上运行命令以防止会话超时。

  1. 要启动 Screen 会话,请输入以下命令:

    screen -S letsencrypt
  2. 要在交互模式下启动 Certbot,请输入以下命令。此命令可指示 Certbot 使用手动授权方法借助 DNS 质询来验证域所有权。

    sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com

    **注意:**将 example.com 替换为您的域名。

  3. Certbot 会提示您向您域的 DNS 记录中添加 TXT 记录。此操作会验证您是否拥有指定的域。Let's Encrypt 会提供单个或多个 TXT 记录用于验证。

  4. 当您在屏幕上看到 TXT 记录时,将提供的记录添加到您域的 DNS 中。**注意:**只有在确认 TXT 记录已传播到互联网 DNS 之后,才可以按 ENTER。不要按 Ctrl + D,因为此操作会终止当前的 Screen 会话。

  5. 要确认 TXT 记录已传播到互联网 DNS,请在 MX Toolbox 网站上的 DNS Text Lookup 中查询。要进行检查,请在文本框中输入以下文本,然后选择 TXT Lookup

    _acme-challenge.example.com

    **注意:**将 example.com 替换为您的域名。

  6. 如果您的 TXT 记录已传播到互联网 DNS,您会在页面上看到 TXT 记录值。返回屏幕并按下 ENTER
    **注意:**如果您已从 Shell 中退出,则使用命令 screen -r SESSIONID 返回。要查找会话 ID,请运行 screen -ls 命令。

  7. 如果 Certbot 提示要求您添加另外一条 TXT 记录,请重复第 4 步至第 6 步。

  8. 在 Certbot 生成 SSL 证书后,您会收到 Successfully received certificate 消息。还会提供证书和密钥文件的位置。将这些文件位置复制到文本文件中,以便在第 9 步中使用。

  9. 现在,您已经安装了证书并且设置了续订。但是,您还必须配置 Web 服务器才能使用此证书,并且还必须设置 HTTPS 重定向。配置取决于您实例的 Web 服务器设置。有关配置说明,请参阅您的 Web 服务文档。

AWS 官方
AWS 官方已更新 1 年前