Global outage event
If you're experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
我如何在 Lightsail 上托管的 Bitnami 堆栈中安装 Let's Encrypt SSL 证书?
我想在具有 Bitnami 堆栈的 Amazon Lightsail 实例中为我的网站安装通配符 SSL 证书。
简述
有关如何安装不同实例蓝图或标准证书的信息,请参阅以下 AWS Knowledge Center 文章:
- 我如何在 Lightsail 实例中安装标准的 Let's Encrypt SSL 证书?此解决方案包括 Amazon Linux 2 和 Ubuntu 等实例。
- 我如何在 Amazon Lightsail 上托管的 Bitnami 堆栈中安装 Let's Encrypt SSL 证书?此解决方案包括 WordPress、LAMP 和 Magento 等实例。
- 我如何在 Amazon Lightsail 中安装通配符 Let's Encrypt SSL 证书?此解决方案包括 Amazon Linux 2 和 Ubuntu 等实例。
解决方法
在 Bitnami 托管的 Lightsail 实例上安装通配符 Let's Encrypt SSL 证书的步骤取决于您的域使用的 DNS 提供商。请检查您的 DNS 提供商是否在 Lego 网站上的 DNS 提供商中列出。然后,选择适当的方法:
- 如果您的域使用的是其中一个列出的 DNS 提供商,使用 Bitnami 提供的 Lego 工具。
- 如果您的域没有使用列出的 DNS 提供商,则使用 Certbot 包。
**注意:**根据您的 Bitnami 堆栈使用的是原生 Linux 系统包(方法 A)还是自包含安装(方法 B),文件路径可能会发生变化。最新的 Bitnami WordPress 蓝图仅对方法 A 可用。
要确定 Bitnami 的安装类型,运行以下命令:
test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."
Lego 工具
Bitnami 提供 bncert-tool 和 Lego 工具。Lego 工具支持创建通配符 SSL 证书。bncert-tool 不支持创建通配符 SSL 证书。
**注意:**在以下示例中,DNS 提供商是 Amazon Route 53 和 Amazon Lightsail。
要使用 Lego 工具安装通配符 Let's Encrypt SSL 证书,请完成以下步骤:
-
创建具有编程访问权限的 AWS Identity and Access Management (IAM) 用户。要确定 Lego 完成 DNS 质询所需的 IAM 用户权限,请参见 Lego 网站上的 IAM 策略示例。
-
要在 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 region = us-east-1**注意:**将 aws_access_key_id 和 aws_secret_access_key 替换为您的值。将 us-east-1 替换为您的 Lightsail 实例的 AWS 区域。
-
要保存文件,按 Ctrl + X,然后按 y,最后按 Enter。
-
如果您的 Bitnami 实例不包含 /opt/bitnami/letsencrypt/ 目录,运行以下命令手动安装 Lego 客户端:
cd /tmp curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i - -O lego.tar.gz tar xzf lego.tar.gz sudo mkdir -p /opt/bitnami/letsencrypt sudo mv lego /opt/bitnami/letsencrypt/lego -
要在服务器中创建通配符 Let's Encrypt 证书,根据您的服务器类型运行以下命令:
Route 53 名称服务器:sudo /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns route53 --path="/opt/bitnami/letsencrypt" runLightsail 名称服务器:
sudo DNS_ZONE=DOMAIN /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns lightsail --path="/opt/bitnami/letsencrypt" run注意:将 EMAIL-ADDRESS 替换为您想要接收证书更新的电子邮件地址。将 DOMAIN 替换为您的域名。
SSL 证书和私钥在以下位置生成:/opt/bitnami/letsencrypt/certificates/DOMAIN.crt 或 /opt/bitnami/letsencrypt/certificates/DOMAIN.key。 -
要停止 Bitnami 堆栈服务,运行以下命令:
sudo /opt/bitnami/ctlscript.sh stop -
根据您的服务器和方法,将 SSL 证书和证书密钥文件链接到您的 Web 服务器当前读取的位置:
Apache,方法 Asudo 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 sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/apache2/conf/bitnami/certs/server.key sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crtApache,方法 B
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 sudo mv /opt/bitnami/apache2/conf/server.csr /opt/bitnami/apache2/conf/server.csr.old sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/apache2/conf/server.key sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/server.crtNGINX,方法 A
sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt.old sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.key /opt/bitnami/nginx/conf/bitnami/certs/server.key.old sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/nginx/conf/bitnami/certs/server.key sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crtNGINX,方法 B
sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/nginx/conf/server.crt.old sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/nginx/conf/server.key.old sudo mv /opt/bitnami/nginx/conf/server.csr /opt/bitnami/nginx/conf/server.csr.old sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/nginx/conf/server.key sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/server.crt**注意:**对于上述命令,将 DOMAIN 替换为您的域名。
-
要启动 Bitnami 堆栈服务,运行以下命令:
sudo /opt/bitnami/ctlscript.sh start -
要自动续订证书,运行以下命令打开 crontab 编辑器:
sudo crontab -e -u bitnami
**注意:**Let's Encrypt 证书的有效期为 90 天。
在 crontab 文件中输入以下行,然后保存文件:
Apache
0 0 * * * sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns DNS renew >> /var/log/letsencrypt.log 2>&1 && sudo /opt/bitnami/apache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf -k graceful
Nginx
0 0 * * * sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns DNS renew >> /var/log/letsencrypt.log 2>&1 && sudo /opt/bitnami/nginx/sbin/nginx -c /opt/bitnami/nginx/conf/nginx.conf -s reload
**注意:**将 EMAIL-ADDRESS、DOMAIN 和 DNS 替换为您的值。 设置 HTTPS 重定向。有关更多信息,请参阅 Bitnami 网站上的使用 Apache 执行 HTTPS 重定向和使用 NGINX 执行 HTTPS 重定向。
Certbot 包
先决条件:
- 安装 Certbot。
- 确定您的 Linux 发行版。对于 Bitnami 托管的实例,Linux 发行版要么是 Debian,要么是 Ubuntu。运行以下命令以确认您的 Linux 发行版:
**注意:**此方法不支持自动证书续订。cat /etc/os-release | grep -i ^id
要使用 Certbot 包安装通配符 Let's Encrypt SSL 证书,请完成以下步骤:
-
启动 Linux GNU 屏幕会话。由于在域的 DNS 提供商中添加 TXT 记录需要时间,因此会话可能会超时。最佳做法是在 Linux GNU 屏幕中运行命令,这样会话不会超时。要启动屏幕会话,运行以下命令:
screen -S letsencrypt -
要启动 Certbot 交互模式,运行以下命令:
sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com**注意:**将 example.com 替换为您的值。
如果您收到错误响应,如 "bash: certbot: command not found",您可能需要将 /bin/snap 添加到 PATH 环境变量。首先,输入 "exit" 并按 Enter。或者,按 Ctrl + D 退出屏幕会话。然后,编辑 /etc/environment,在列表中添加 /snap/bin。重启系统。要确认再没有发生错误,运行以下命令:$ certbot -h -
复制 Let's Encrypt 提供的 TXT 记录。Let's Encrypt 会提供一个或多个 TXT 记录,您必须使用这些记录进行验证。
-
将提供的记录添加到您的域的 DNS 中。
重要说明: 在确认 TXT 记录已传播到互联网 DNS 之前,不要按 Enter。另外,不要按 Ctrl + D,因为此操作会终止屏幕会话。 -
要确认记录已经传播,通过 MxToolbox 网站上的 DNS 文本查找查找 TXT 记录:
_acme-challenge.example.com**注意:**将 example.com 替换为您的值。
如果您的 TXT 记录已传播,您会在页面上看到 TXT 记录值。返回上一个屏幕,按 Enter。 -
如果您已被从 Shell 中删除,运行以下命令返回 Shell:
Screen -r SESSIONID**注意:**运行 screen -ls 命令获取会话 ID。
-
(可选)如果出现提示,重复前面的步骤添加另一个 TXT 记录。
**注意:**如果您为 DNS 提供商使用 Route 53,每行输入一个 TXT 值。编辑 TXT 记录,然后在一个新行中添加 certbot 提供的 TXT 值。 -
保存 SSL 证书和密钥文件的文件位置。SSL 证书生成后,您会收到 "Successfully received certificate" 消息。
-
要配置您的 Web 服务器,使用此证书,根据您的服务器和方法运行以下命令:
Apache,方法 Asudo /opt/bitnami/ctlscript.sh stop 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 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 sudo /opt/bitnami/ctlscript.sh startApache,方法 B
sudo /opt/bitnami/ctlscript.sh stop 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 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 sudo /opt/bitnami/ctlscript.sh startNGINX,方法 A
sudo /opt/bitnami/ctlscript.sh stop sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt.old sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.key /opt/bitnami/nginx/conf/bitnami/certs/server.key.old sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/nginx/conf/bitnami/certs/server.key sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/nginx/conf/bitnami/certs/server.crt sudo /opt/bitnami/ctlscript.sh startNGINX,方法 B
sudo /opt/bitnami/ctlscript.sh stop sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/nginx/conf/server.crt.old sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/nginx/conf/server.key.old sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/nginx/conf/server.key sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/nginx/conf/server.crt sudo /opt/bitnami/ctlscript.sh start**注意:**对于上述命令,将 DOMAIN 替换为您的域名。
-
设置 HTTPS 重定向。有关更多信息,请参阅 Bitnami 网站上的使用 Apache 执行 HTTPS 重定向和使用 NGINX 执行 HTTPS 重定向。
