我想在 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。
-
创建具有编程访问权限的 AWS Identity and Access Management (IAM) 用户。有关 Certbot 完成 DNS 质询所需的最低 IAM 用户权限,请参阅 Certbot 网站上的 certbot-dns-route-53。
-
要在 nano 编辑器中打开 /root/.aws/credentials 文件,请运行以下命令:
sudo mkdir /root/.aws
sudo nano /root/.aws/credentials
-
将以下行复制到文件中:
[default]
aws_access_key_id = AKIA************E
aws_secret_access_key = 1yop**************************l
**注意:**将 aws_access_key_id 替换为在第 1 步中创建的访问密钥 ID。
-
要保存文件,请按 Ctrl + X,然后按 Y,最后按 ENTER。
-
在服务器上创建 Let's Encrypt 证书。如果您的域使用 Amazon Route 53 作为 DNS 提供商,请运行以下命令:
sudo certbot certonly --dns-route53 -d example.com -d *.example.com
**注意:**将 example.com 替换为您的域名。
-
在 Certbot 生成 SSL 证书后,您会收到 Successfully received certificate 消息。还会提供证书和密钥文件的位置。将这些文件位置复制到文本文件中,以便在第 8 步中使用。
-
设置自动证书续订。
如果使用 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
-
现在,您已经安装了证书并且设置了续订。但是,您还必须配置 Web 服务器才能使用此证书,并且还必须设置 HTTPS 重定向。配置取决于您实例的 Web 服务器设置。有关配置说明,请参阅您的 Web 服务文档。
如果您的域未使用列出的 DNS 提供商之一
**注意:**此方法不支持自动证书续订。
在以下步骤中,您要在域的 DNS 提供商中添加 TXT 记录。此过程可能需要一些时间。最佳做法是在 Linux GNU Screen 上运行命令以防止会话超时。
-
要启动 Screen 会话,请输入以下命令:
screen -S letsencrypt
-
要在交互模式下启动 Certbot,请输入以下命令。此命令可指示 Certbot 使用手动授权方法借助 DNS 质询来验证域所有权。
sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com
**注意:**将 example.com 替换为您的域名。
-
Certbot 会提示您向您域的 DNS 记录中添加 TXT 记录。此操作会验证您是否拥有指定的域。Let's Encrypt 会提供单个或多个 TXT 记录用于验证。
-
当您在屏幕上看到 TXT 记录时,将提供的记录添加到您域的 DNS 中。**注意:**只有在确认 TXT 记录已传播到互联网 DNS 之后,才可以按 ENTER。不要按 Ctrl + D,因为此操作会终止当前的 Screen 会话。
-
要确认 TXT 记录已传播到互联网 DNS,请在 MX Toolbox 网站上的 DNS Text Lookup 中查询。要进行检查,请在文本框中输入以下文本,然后选择 TXT Lookup:
_acme-challenge.example.com
**注意:**将 example.com 替换为您的域名。
-
如果您的 TXT 记录已传播到互联网 DNS,您会在页面上看到 TXT 记录值。返回屏幕并按下 ENTER。
**注意:**如果您已从 Shell 中退出,则使用命令 screen -r SESSIONID 返回。要查找会话 ID,请运行 screen -ls 命令。
-
如果 Certbot 提示要求您添加另外一条 TXT 记录,请重复第 4 步至第 6 步。
-
在 Certbot 生成 SSL 证书后,您会收到 Successfully received certificate 消息。还会提供证书和密钥文件的位置。将这些文件位置复制到文本文件中,以便在第 9 步中使用。
-
现在,您已经安装了证书并且设置了续订。但是,您还必须配置 Web 服务器才能使用此证书,并且还必须设置 HTTPS 重定向。配置取决于您实例的 Web 服务器设置。有关配置说明,请参阅您的 Web 服务文档。