如何使用 Let’s Encrypt 在您的 Web 服务器上设置 HTTPS

最近,我使用官方的 Node.js droplet 在 DigitalOcean 上设置了一个 VPS,它会安装 Ubuntu Linux 并将 Node 和 Nginx 配置为反向代理,也就是说,它是用户和您的 Node.js 应用程序之间的中间人。

默认情况下,droplet 配置为使用 HTTP,但我们希望我们的应用程序使用 HTTPS,这是 HTTP 的安全版本。

因此,我们需要进行一些操作,包括使用 Certbot 通过 Let’s Encrypt 获取 SSL 证书,并配置 Nginx 使用该证书。

我们将按照以下步骤进行操作:

安装 Certbot 和 Certbot Nginx 包

以下说明假设您使用的是 Ubuntu、Debian 或任何使用 apt-get 管理软件包的其他 Linux 发行版:

sudo apt-get install certbot python3-certbot-nginx

设置 Nginx

编辑 /etc/nginx/sites-available/default 文件以设置正确的服务器名称(这对于 SSL 是必需的):

sudo nano /etc/nginx/sites-available/default

找到 server_name 行并输入您的域名:

server_name my.domain.com;

现在运行以下命令以重新加载带有更新配置的 Nginx:

sudo systemctl reload nginx

防火墙应已配置为接受 HTTPS,请输入 sudo ufw status 查看配置状态。您应该在列表中看到 Nginx Full。如果只看到 Nginx HTTP,请查找如何更改此配置。

使用 Certbot 生成 SSL 证书

现在,我们可以调用 Certbot 来生成 SSL 证书。您必须以 root 身份运行此命令:

sudo certbot --nginx -d my.domain.com

(当然,将 my.domain.com 更改为您的域名)

输入您的真实电子邮件地址,因为该地址将用于与您沟通任何问题。

我还建议选择将 HTTP 自动重定向至 HTTPS 的选项。

完了!

SSL 证书有效期为 90 天,并且 Certbot 已经设置了自动续订。要模拟和测试续订过程,请运行:

sudo certbot renew --dry-run

这应该会显示成功的消息。

至此,您的 Node 应用程序应该在 HTTPS 上成功运行,无需您进行其他更改。