使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何在 Lightsail 实例上托管的 Bitnami 堆栈中续订 Let's Encrypt SSL 证书?

2 分钟阅读
0

在 Amazon Lightsail Bitnami 实例中为我的网站安装的 Let's Encrypt SSL 证书即将过期。

简短描述

Let's Encrypt SSL 证书会在创建 90 天后过期。如果您按照如何在 Lightsail 上托管的 Bitnami 堆栈中安装 Let's Encrypt SSL 证书?中提供的步骤安装了标准 Let's Encrypt 证书,则该 SSL 证书会自动续订。但是,如果配置不正确,自动续订可能会失败。

如果您按照如何在 Amazon Lightsail 上托管的 Bitnami 堆栈中安装通配符 Let's Encrypt SSL 证书?中的方法 2 安装了通配符 Let's Encrypt 证书,则需要手动续订证书。方法 2 不支持自动续订。

以下解决方法涵盖了如何在 Lightsail 实例上托管的 Bitnami(例如 WordPress、LAMP、Magento 和 MEAN)中手动续订证书。

解决方法

识别证书安装工具

识别您用于安装证书的工具。要识别您用来安装 SSL 证书的工具,请执行以下操作:

  1. 运行以下命令在 /etc/letsencrypt/opt/bitnami/letsencrypt 目录中搜索证书文件。请务必将 DOMAIN 替换为您的域名。

    sudo grep -irl "$(openssl s_client -verify_quiet -showcerts -connect DOMAIN:443 2>/dev/null | sed -n '/BEGIN/,/END/{p;/END/q}' | head -n 3 | tail -n 2)" /opt/bitnami/letsencrypt /etc/letsencrypt
  2. 如果证书文件位于 /opt/bitnami/letsencrypt 子目录中,则该证书可能是使用 bncert-toolLego 客户端安装的。要进行验证,请运行以下命令:

    sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list

如果步骤 1 中的命令输出与第二个命令提供的证书路径相匹配,则您的证书是使用 bncert-toolLego 安装的。

如果证书文件位于 /etc/letsencrypt 子目录中,则证书可能是使用 Certbot 安装的。要进行验证,请运行以下命令:

sudo certbot certificates

如果步骤 1 中的命令输出与 certbot 命令提供的证书路径相匹配,则您的证书是使用 Certbot 安装的。

根据已识别的工具,按照相关的解决步骤进行操作。

续订使用 bncert-tool 或 Lego 工具安装的 Let's Encrypt 证书

运行以下命令:

sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/letsencrypt/lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/opt/bitnami/letsencrypt" renew --days 90
sudo /opt/bitnami/ctlscript.sh start

对于所有命令,将 EMAIL-ADDRESSDOMAIN 替换为正确的值。对于 EMAIL-ADDRESS,请使用您的任何有效电子邮件地址。或者,您使用安装证书时使用的电子邮件地址。您可以使用以下命令检索安装证书时使用的电子邮件地址:

sudo ls /opt/bitnami/letsencrypt/accounts/acm*

如果需要,请使用以下命令确认域名:

sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list

续订使用 Certbot 工具安装的 Let's Encrypt 证书

运行以下命令以确定您安装证书时使用的身份验证方法。将 DOMAIN 替换为证书的主域名:

sudo cat /etc/letsencrypt/renewal/DOMAIN.conf

在命令输出中,查看 authenticator 参数值。根据参数值,采用以下续订方法之一:

如果 authenticator 参数值是 standalonewebrootapachenginxdns-route53,或其他非 manual 值,则使用以下命令完成续订:

sudo /opt/bitnami/ctlscript.sh stop
sudo certbot renew
sudo /opt/bitnami/ctlscript.sh start

这些命令会续订所有即将到期的已安装证书。

-或-

如果 authenticator 参数值为 manualpref_challs 参数值为 dns,则无法设置自动续订。您必须按照以下步骤手动续订。注意: 每当续订证书时,都必须重复此步骤。

  1. 此方法要求您在域的 DNS 提供商处添加 TXT 记录。最佳实践是在 Linux GNU Screen 中运行命令以防止会话超时。有关更多信息,请参阅 How to use Linux Screen
    要启动 Screen 会话,请输入以下命令:

    screen -S letsencrypt
  2. 运行以下命令并查找 Domains 参数值。将 DOMAIN 替换为证书的主域名:

    sudo certbot certificates -d DOMAIN
  3. 运行以下命令续订证书。确保使用 -d 选项并按相同顺序包含您在前面命令中找到的每个域。如果您添加、删除域名,或更改域名顺序,则可能会创建新证书,而不是续订原始证书。

    sudo certbot certonly --manual --preferred-challenge dns -d DOMAIN-1 -d DOMAIN-2 --force-renewal
  4. 您会收到一条提示,要求验证您是否拥有指定域名。此验证旨在将 TXT 记录添加到您的域名的 DNS 记录中。Let's Encrypt 提供单条或多条 TXT 记录,您必须使用这些记录进行验证。

  5. 当您在 screen 上看到 TXT 记录时,将提供的记录添加到您的域名的 DNS 中。
    重要事项:在确认 TXT 记录已传播到互联网 DNS 之前,请勿按回车。不要按 CTRL+D,因为这会结束当前的 screen 会话。

  6. 要确认相关 TXT 记录已传播到互联网 DNS,请在 MX Toolbox 网站上的 DNS Text Lookup 中进行查询。在文本框中输入以下文本,然后选择 TXT Lookup 来运行检查。将 example.com 替换为您的域名:

    _acme-challenge.example.com
  7. 如果您的 TXT 记录已经传播到互联网的 DNS,则会在该页面中看到 TXT 记录值。现在,您可以返回屏幕并按回车

  8. 如果您已从 Shell 中退出,则通过命令 screen -r SESSIONID 返回。运行 screen -ls 命令获取会话 ID。

  9. 如果 Certbot 提示符要求您添加另一条 TXT 记录,请再次完成步骤 5 -8。

  10. 成功生成 SSL 证书后,您将收到“Successfully received certificate”消息。

AWS 官方
AWS 官方已更新 10 个月前