如何在 Amazon Lightsail 上托管的 Bitnami 堆栈中安装通配符 Let's Encrypt SSL 证书?

上次更新时间:2021 年 10 月 20 日

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

简短描述

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

标准 Let's Encrypt 证书

有关在不使用 Bitnami 堆栈的 Lightsail 实例上安装标准的 Let's Encrypt 证书的信息,例如 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 堆栈的 Lightsail 实例中安装通配符让 Let's Encrypt 证书的信息,例如 Amazon Linux 2、Ubuntu 等,请参阅如何在 Amazon Lightsail 中安装通配符 Let's Encrypt SSL 证书?

解决方法

在 Bitnami 托管的 Lightsail 实例上安装通配符 Let's Encrypt SSL 证书的步骤取决于您的域使用的 DNS 提供商。要确定使用哪种方法,请验证您的 DNS 提供商是否在 Lego 文档的 DNS 提供商中列出。然后,选择要使用的适当方法:

方法 1:使用 Bitnami 提供的 Lego 工具如果您的域名使用列出的 DNS 提供商之一。

方法 2:如果您的域没有使用任何列出的 DNS 提供商,请使用 Certbot 软件包。

注意:本文中提到的文件路径可能会发生变化,具体取决于 Bitnami 堆栈是使用本机 Linux 系统软件包(方法 A)还是自包含安装(方法 B)。要识别您的 Bitnami 安装类型,请运行以下命令:

test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."

方法 1

除了 bncert-tool 之外,Bitnami 堆栈还提供了 Lego 工具。此工具支持创建通配符 SSL 证书,而 bncert-tool 不支持创建通配符 SSL 证书。

先决条件和限制

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

注意:在以下示例中,DNS 提供商是 Amazon Route 53 还是 Amazon Lightsail。有关其他受支持 DNS 提供商的说明,请参阅 Lego 文档中的 DNS 提供程序

1.    创建具有编程访问权限的 AWS Identity and Access Management (IAM) 用户。有关 Lego 完成 DNS 挑战所需的 IAM 用户的最低权限,请参阅 Lego 文档中的策略

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.    如果您的 Bitnami 实例不包含目录 /opt/bitnami/letscrypt/,则可以使用以下命令手动安装 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 xf lego.tar.gz
sudo mkdir -p /opt/bitnami/letsencrypt
sudo mv lego /opt/bitnami/letsencrypt/lego

5.    在服务器中创建 Let's Encrypt 证书。将 EMAIL-ADDRESS 替换为您希望在其中接收有关证书的进一步更新的电子邮件地址。将 DOMAIN 替换为您的域名。

Route 53 名称服务器

sudo /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns route53 --path="/opt/bitnami/letsencrypt" run

Lightsail 名称服务器

sudo /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains"*.DOMAIN" --dns lightsail --path="/opt/bitnami/letsencrypt" run

成功生成 SSL 证书后,您会收到消息“服务器使用证书响应”。SSL 证书和私有密钥在以下位置生成:

/opt/bitnami/letsencrypt/certificates/DOMAIN.crt

/opt/bitnami/letsencrypt/certificates/DOMAIN.key

6.    将 SSL 证书和证书密钥文件链接到 Web 服务器当前正在读取的位置:

方法 A 下的 Apache

在以下示例命令中,将 DOMAIN 占位符替换为您的域名。

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 /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.crt
sudo /opt/bitnami/ctlscript.sh restart apache

方法 B 下的 Apache

在以下示例命令中,将 DOMAIN 占位符替换为您的域名。

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.crt
sudo /opt/bitnami/ctlscript.sh restart apache

方法 A 下的 NGINX

在以下示例命令中,将 DOMAIN 占位符替换为您的域名。

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.crt
sudo /opt/bitnami/ctlscript.sh restart nginx

方法 B 下的 NGINX

在以下示例命令中,将 DOMAIN 占位符替换为您的域名。

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
sudo /opt/bitnami/ctlscript.sh restart nginx

7.    设置自动续订证书。

Let's Encrypt 证书的有效期为 90 天。要自动续订证书以便证书在到期之前自动续订,请执行以下操作:

运行以下命令打开 crontab 编辑器:

sudo crontab -e -u bitnami

将以下行添加到 crontab 文件中,然后保存该文件。用您的电子邮件地址替换EMAIL-ADDRESS,用您的域名替换DOMAIN ,用您的域名服务器提供商名称(Route 53、Lightsail 等)替换域名和 DNS

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

8.    设置 HTTPS 重新导向。有关更多信息,请参阅 Bitnami 网站上的以下信息:

方法 2

先决条件和限制

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

注意:在开始以下步骤之前,请先安装 Certbot。有关安装说明,请参阅如何在 Lightsail 实例中安装 Certbot 软件包以进行 Let's Encrypt 证书安装?

对于 Bitnami 托管的实例,Linux 发行版可以是 Debian 或 Ubuntu。运行以下命令以确认您拥有的是哪个 Linux 发行版:

cat /etc/os-release | grep -i ^id

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 键。

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

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

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

10.    只有证书安装和续订设置完成。您仍然必须配置 Web 服务器才能使用此证书并设置 HTTPS 重新导向。使用以下命令集之一配置 Web 服务器以使用证书。

方法 A 下的 Apache

在以下示例命令中,将 DOMAIN 占位符替换为您的域名。

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 restart apache

方法 B 下的 Apache

在以下示例命令中,将 DOMAIN 占位符替换为您的域名。

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 restart apache

方法 A 下的 NGINX

在以下示例命令中,将 DOMAIN 占位符替换为您的域名。

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 restart nginx

方法 B 下的 NGINX

在以下示例命令中,将 DOMAIN 占位符替换为您的域名。

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 restart nginx

8.    设置 HTTPS 重新导向。有关更多信息,请参阅 Bitnami 网站上的以下信息:


这篇文章对您有帮助吗?


您是否需要账单或技术支持?