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

5 分钟阅读
0

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

简短描述

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

标准 Let's Encrypt 证书

要在没有 Bitnami 堆栈的 Lightsail 实例上安装标准 Let's Encrypt SSL 证书,请参阅如何在 Lightsail 实例中安装标准的 Let's Encrypt SSL 证书? 这包括 Amazon Linux 2 和 Ubuntu 等实例。

要在具有 Bitnami 堆栈的 Lightsail 实例上安装标准 Let's Encrypt SSL 证书,请参阅如何在 Amazon Lightsail 上托管的 Bitnami 堆栈中安装 Let's Encrypt SSL 证书? 这包括 WordPress、LAMP 和 Magento 等实例。

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

要在没有 Bitnami 堆栈的 Lightsail 实例中安装通配符 Let's Encrypt 证书,请参阅如何在 Amazon Lightsail 中安装通配符 Let's Encrypt SSL 证书? 这包括 Amazon Linux 2 和 Ubuntu 等实例。

解决方案

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

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,请在 MxToolbox 上的 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 网站上的以下信息:


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