我想要为托管在不使用 Bitnami 堆栈的 Amazon Lightsail 实例中的网站安装标准 SSL 证书。
解决方案
**注意:**在未使用 Bitnami 堆栈的 Lightsail 实例中安装标准 Let's Encrypt SSL 证书之前,请安装 Certbot 软件包。
域必须通过负载均衡器或通过分配直接指向 Lightsail 实例。为了完成证书验证,网站 URL 不得在 Web 浏览器中返回来自负载均衡器或分配的错误。
要安装标准 Let's Encrypt SSL 证书,请完成下面的步骤:
-
运行适用于您的 Linux 发行版的命令,从而停止在您的实例中运行的 Web 服务:
Apache,如 Amazon Linux2 或 CentOS
sudo service httpd stop
Apache,如 Ubuntu 或 Debian
sudo service apache2 stop
NGINX
sudo service nginx stop
-
运行以下命令来安装 SSL 证书:
sudo certbot certonly --standalone -d example.com -d www.example.com
**注意:**将 www.example.com 替换为您的域名。
在 Certbot 生成 SSL 证书后,您会收到消息 Successfully received certificate。还提供了证书和密钥文件位置。将这些文件位置复制到文本文件中以供在步骤 5 中使用。
-
运行适用于您的 Linux 发行版的命令来启动 Web 服务:
Apache,如 Amazon Linux 2 或 CentOS
sudo service httpd start
Apache,如 Ubuntu 或 Debian
sudo service apache2 start
NGINX
sudo service nginx start
-
设置自动证书续订。
如果使用 snapd 安装了 Certbot 软件包,则会在 systemd 计时器或 cronjobs 中自动配置续订。但是,在运行 Certbot 命令之前,您必须停止 Web 服务。要停止 Web 服务然后再次启动它,您必须自动执行停止和启动过程。要设置自动化,请运行下面的命令:
sudo sh -c 'printf "#!/bin/sh\n service apache2 stop \n" > /etc/letsencrypt/renewal-hooks/pre/webservice.sh'
sudo sh -c 'printf "#!/bin/sh\n service apache2 start \n" > /etc/letsencrypt/renewal-hooks/post/webservice.sh'
sudo chmod 755 /etc/letsencrypt/renewal-hooks/*/webservice.sh
**注意:**将 service apache2 替换为您的 Web 服务以及特定于 Web 服务的启动和停止命令。
如果 Linux 发行版是 Amazon Linux 2 或 FreeBSD,则不能使用 snapd 安装 Certbot 软件包。要手动配置续订,请运行下面的命令:
echo "30 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew --pre-hook 'service apache2 stop' --post-hook 'service apache2 start'" | sudo tee -a /etc/crontab > /dev/null
**注意:**将 service apache2 替换为您的 Web 服务以及特定于 Web 服务的停止和启动命令。
-
将您的 Web 服务器配置为使用标准 Let's Encrypt SSL 证书,并设置 HTTPS 重定向。
**注意:**该配置取决于您实例中的 Web 服务器设置。要配置 Web 服务器,请参阅 Web 服务的官方文档。
相关信息
如何在 Lightsail 上托管的 Bitnami 堆栈中安装 Let's Encrypt SSL 证书?
如何在 Amazon Lightsail 上托管的 Bitnami 堆栈中安装通配符 Let's Encrypt SSL 证书?
如何在 Amazon Lightsail 中安装通配符 Let's Encrypt SSL 证书?