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

3 分钟阅读
0

如何在 Amazon Lightsail 实例中为我的网站安装通配符 SSL 证书?

简短描述

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

标准 Let's Encrypt 证书

有关在不使用 Bitnami 堆栈的 Lightsail 实例中安装标准的 Let's Encrypt SSL 证书(不是通配符)的信息,例如 Amazon Linux 2、Ubuntu 等,请参阅如何在 Lightsail 实例中安装标准的 Let's Encrypt SSL 证书?

有关在带有 Bitnami 堆栈的 Lightsail 实例中安装标准的 Let's Encrypt SSL 证书(不是通配符)的信息,例如 WordPress、LAMP、Magento 等,请参阅如何在托管在 Amazon Lightsail 上的 Bitnami 堆栈中安装标准的 Let's Encrypt SSL 证书?

通配符 Let's Encrypt 证书(例如 *.example.com)

有关在使用 Bitnami 堆栈(如 WordPress、Lamp、Magento、MEAN 等)的 Lightsail 实例中安装通配符 Let's Encrypt 证书的信息,请参阅如何在托管在 Amazon Lightsail 上的 Bitnami 堆栈中安装通配符 Let's Encrypt SSL 证书?

解决方法

在 Lightsail 实例上安装通配符 Let's Encrypt SSL 证书的步骤取决于您的域使用的 DNS 提供商。要确定使用哪种方法,请验证您的域名系统提供商是否列在 DNS 插件的 Cerbot DNS 列表中。然后,选择要使用的适当方法:

**方法 1:**如果您的域使用列出的 DNS 提供商之一,请使用此方法。

**方法 2:**如果您的域未使用任何列出的 DNS 提供商,请使用此方法。

方法 1

先决条件和限制

  • 以下步骤介绍了在服务器中安装证书。您必须手动完成其他步骤,例如配置 Web 服务器以使用证书和设置 HTTPS 重新导向。
  • 该域必须使用 Certbot DNS 列表 中列出的 DNS 提供商之一。

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

在以下示例中,DNS 提供商是 Amazon Route 53。有关其他受支持 DNS 提供商的说明,请参阅 DNS 插件

1.    创建具有编程访问权限的 Access Management (IAM) 用户。有关 Certbot 完成 DNS 挑战所需要附上 IAM 用户的最低权限,请参阅 certbot-dns-route-53

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

sudo mkdir /root/.aws
sudo nano /root/.aws/credentials

3.    将以下行复制到文件中。然后按 ctrl+x 保存文件,然后按 y,接着按 ENTER 键。

在以下命令中,将 aws_access_key_id 替换为在步骤 1 中创建的访问密钥 ID。将 aws_secret_access_key 替换为在步骤 1 中创建的私有访问密钥。

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

4.    在服务器中创建 Let's Encrypt 证书。将 example.com 替换为域名。

如果您的域使用 Amazon Route 53 作为 DNS 提供商,请运行以下命令:

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

成功生成 SSL 证书后,您会收到消息“成功收到证书”。还提供了证书和密钥文件位置。将这些文件位置保存到记事本中,以便在步骤 6 中使用。

5.    设置自动续订证书。 如果使用 snapd 安装了 Certbot 软件包,则续订会在 systemd 计时器或 cronjobs 中自动配置。

如果操作系统发行版是 Amazon Linux 2 或 FreeBSD,那么 Certbot 软件包不是使用 snapd 安装的。在这种情况下,您必须通过运行以下命令手动配置续订:

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

6.    只有证书安装和续订设置完成。您仍然必须配置 Web 服务器才能使用此证书并设置 HTTPS 重新导向。此配置会有所不同,取决于实例中的 Web 服务器设置。有关完成这些步骤的说明,请参阅 Web 服务文档。

方法 2

先决条件和限制

  • 以下步骤介绍了在服务器中安装证书。您必须手动完成其他步骤,例如配置 Web 服务器以使用证书和设置 HTTPS 重新导向。
  • 此方法不支持自动续订证书。

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

1.    此方法需要在域的 DNS 提供程序中添加 TXT 记录。此过程可能需要一些时间,因此最佳实践是在 Linux GNU Screen 中运行命令以防止会话超时。要启动屏幕会话,请输入以下命令:

screen -S letsencrypt

2.    输入以下命令以交互模式启动 Certbot。此命令告诉 Certbot 对 DNS 质询使用手动授权方法来验证域名所有权。将 example.com 替换为域名。

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

3.    您会收到一条提示,通过将 TXT 记录添加到域的 DNS 记录中来验证您是否拥有指定的域。Let's Encrypt 提供您必须用于验证的单个或多个 TXT 记录。

4.    当您在屏幕上看到 TXT 记录时,首先将提供的记录添加到域名的 DNS 中。在确认 TXT 记录已传播到互联网 DNS 之前,请勿按 ENTER 键。另外,请勿按 CTRL+D,因为它将终止当前屏幕会话。

5.    要确认 TXT 记录已传播到互联网 DNS,请在 DNS Text Lookup 中查找。在文本框中输入以下文本,然后选择 TXT Lookup 以运行检查。请确保将 example.com 替换为您的域名。

_acme-challenge.example.com

6.    如果您的 TXT 记录已传播到互联网的 DNS,则可以在页面中看到 TXT 记录值。现在,您可以返回屏幕并按 ENTER 键。

**注意:**如果您已从命令行管理程序中移除,则可以使用命令 screen -r SESSIONID 返回。通过运行 screen -ls 命令获取会话 ID。

7.    如果 Certbot 提示要求您添加另一个 TXT 记录,请再次完成步骤 4 至 7。

8.    成功生成 SSL 证书后,您会收到消息“成功收到证书”。还提供了证书和密钥文件位置。将这些文件位置保存到记事本中以供下一步使用。

9.    只有证书安装和续订设置完成。您仍然必须配置 Web 服务器才能使用此证书并设置 HTTPS 重新导向。此配置会有所不同,取决于实例中的 Web 服务器设置。有关完成这些步骤的说明,请参阅 Web 服务文档。


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