我昨天遇到了同样的问题,由于没有建议解决方案,我将写下我如何解决它。
显然,此问题与 Lightsail 实例或正在运行的 Apache 服务器没有直接关系,而是与位于其之上的 Bitnami 堆栈有关。以下是安装letsencrypt证书的步骤,取自此处。
先决条件
您需要做的第一件事是确保所有软件包都在您的服务器上更新。您可以使用以下命令执行此操作。
sudo apt update
sudo apt upgrade
1. 安装 CERTBOT
首先,创建一个要安装 Certbot 客户端的目录并移至该目录。
sudo mkdir /opt/bitnami/letsencrypt
cd /opt/bitnami/letsencrypt
现在继续从官方 certbot 发行版安装 Certbot 客户端。您还需要确保脚本具有执行权限。
sudo wget https://dl.eff.org/certbot-auto
sudo chmod a+x ./certbot-auto
现在运行 certbot-auto 脚本来完成安装。该脚本可能会显示一些错误,但您可以忽略它。它将运行并下载它所需的所有依赖项。
sudo ./certbot-auto
2. 生成证书
安装 Certbot 客户端后,您可以继续为您的域生成证书。
sudo ./certbot-auto certonly --webroot -w /opt/bitnami/apache2/htdocs/{example} -d www.example.com -d example.com
仅当您不将文件存储在 htdocs 文件夹本身中时,上面的 ^{example} 是可选的。www.example.com 和 example.com 应该是您的域名。
运行此命令后我遇到了问题,因为我没有为 www 设置 CNAME 记录。我的网站的版本。错误是:
DNS 问题:NXDOMAIN 正在查找 A for www.example.com
要修复它,请转到您的 lightsail 页面,打开 Netowkring 选项卡并为您的站点选择 DNS 区域。在 DNS 记录下单击Add record
,选择 CNAME,在子域中只输入 www,在映射到字段中输入您的域而不输入 www。字首。之后运行上述命令应该没有任何问题。
如果您需要获取多个域的证书,请遵循本指南。它基本上是为每个域主目录添加新路径,从而产生以下命令:
certbot certonly --webroot -w /opt/bitnami/apache2/htdocs/example -d www.example.com -d example.com -w /opt/bitnami/apache2/htdocs/other -d www.other.net -d example.net
3. 将 Let's Encrypt SSL 证书链接到 Apache
您可以在这些位置复制 SSL 证书并重新启动 Apache 以启用新文件。但是使用这种方法,您必须在更新证书时再次复制文件。
因此,更好的方法是创建一个指向您的证书文件的符号链接。每当您续订许可证时,无需此额外步骤即可生效。
您可以使用以下命令创建符号链接。
sudo ln -s /etc/letsencrypt/live/[DOMAIN]/fullchain.pem /opt/bitnami/apache2/conf/server.crt
sudo ln -s /etc/letsencrypt/live/[DOMAIN]/privkey.pem /opt/bitnami/apache2/conf/server.key
确保证书文件名和路径正确。如果您收到文件已存在的错误,请使用以下命令重命名文件。然后重新运行以上两条命令。
mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/serverkey.old
mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/servercrt.old
符号链接到位后,您可以重新启动 Apache 服务器以使其生效。使用以下命令重新启动 Apache 服务器。您也可以从 Lightsail 页面重新启动它。
sudo /opt/bitnami/ctlscript.sh restart apache
而已。在此之后,转到https://example.com应该可以工作,您应该会看到您的证书。
注意。该证书的有效期仅为 3 个月,因此您需要每 3 个月手动刷新一次或为此进行 cron 作业。要刷新它,请按照以下命令操作:
sudo apt update
sudo apt upgrade
cd /opt/bitnami/letsencrypt
sudo ./certbot-auto renew
sudo /opt/bitnami/ctlscript.sh restart apache