提升您网站的安全性:轻松使用 Certbot 完成 NGINX 与 SSL 设置

发布: (2026年1月3日 GMT+8 19:35)
8 分钟阅读
原文: Dev.to

Source: Dev.to

Nginx-Certbot

在当今的数字环境中,网站安全已成为必需。由于网络威胁的增加以及用户对隐私意识的提升,使用 HTTPS 保护网站已成为信任、性能和搜索引擎排名的关键。SSL/TLS 证书是任何严肃的线上存在的必要条件,因为搜索引擎更青睐加密网站,现代浏览器也会在网站不安全时主动提醒用户。

NGINX 是最广泛使用的 Web 服务器之一,全球数百万网站都在使用它,并以卓越的性能和稳定性著称。当与 SSL 加密结合使用时,它为提供 Web 内容提供了快速、安全、可靠的基础。然而,由于配置和证书管理的复杂性,许多开发者和系统管理员在设置 SSL 时会感到望而却步。

这时 Certbot 就派上用场了。Certbot 通过自动化从 Let’s Encrypt 获取、安装和续订免费 SSL 证书的过程,消除了 HTTPS 设置中大量手动工作。在本指南中,我们将:

  1. 安装 NGINX。
  2. 使用 Certbot 为其配置 SSL。
  3. 确保您的网站保持安全,几乎无需维护。

Source:

在 Ubuntu 上安装和配置 NGINX

安装和配置 Web 服务器是使用 SSL 保护网站的第一步。我们将使用 NGINX,这是一款高性能、轻量级的 Web 服务器,常用于反向代理和提供 Web 应用。

前置条件

  • 一台 Ubuntu 服务器(18.04、20.04 或更高版本)
  • 一个具有 sudo 权限的非 root 用户
  • 一个指向服务器 IP 地址的已注册域名

安装 NGINX

sudo apt update
sudo apt install nginx

安装完成后,NGINX 会自动在服务器上启动。验证其是否处于活动状态:

sudo service nginx status

或者,在浏览器中打开服务器的公网 IP 地址。如果 NGINX 正常工作,你应该会看到默认的 “Welcome to NGINX” 页面。

配置 Server Block(服务器块)

NGINX 使用 server blocks(类似 Apache 的虚拟主机)来在同一台服务器上管理多个网站。

cd /etc/nginx/sites-enabled

为你的域名创建一个新的配置文件(将 proxy 替换为有意义的名称):

sudo nano proxy

添加以下配置(将占位符替换为实际值):

server {
    listen 80;
    listen [::]:80;

    server_name YOUR-DOMAIN-NAME;

    location / {
        proxy_pass http://localhost:PORT/;
    }
}

配置说明

  • listen 80; – 监听传入的 HTTP 流量。
  • server_name – 你的实际域名(例如 example.com)。
  • proxy_pass – 将请求转发到本地运行的应用(如 Node.js 或后端服务)。
  • PORT – 应用监听的端口(例如 3000)。

保存并退出文件(CTRL + O,然后 CTRL + X)。

测试 NGINX 配置

在应用更改之前,始终测试配置语法:

sudo nginx -t

如果输出显示 “syntax is ok” 和 “test is successful”,则可以继续。

重启并检查 NGINX 状态

sudo service nginx restart
sudo service nginx status

使用 Certbot(Let’s Encrypt)为 NGINX 加密

在 NGINX 已成功通过 HTTP 提供应用后,启用 HTTPS 是下一步关键操作。SSL/TLS 加密可以防止中间人攻击,提升用户信任度,并有助于搜索引擎排名。

使用 Snap 安装 Certbot

在 Ubuntu 上,推荐通过 Snap 安装 Certbot,因为它能确保始终获得最新且最安全的版本。

sudo snap install core
sudo snap refresh core

安装 Certbot:

sudo snap install --classic certbot

创建符号链接,使 certbot 命令在全局可用:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

验证安装:

certbot --version

为 NGINX 获取并安装 SSL 证书

Certbot 能自动检测你的 NGINX 配置,并在最少输入的情况下完成 SSL 配置。

sudo certbot --nginx

在此过程中,你将被要求:

  • 输入你的电子邮件地址(用于续期和安全通知)。
  • 同意 Let’s Encrypt 的服务条款。
  • 选择是否将你的电子邮件地址分享给电子前哨基金会(Electronic Frontier Foundation)。
  • 选择要为其启用 HTTPS 的域名。
  • 决定是否将所有 HTTP 流量重定向到 HTTPS。

脚本执行完毕后,Certbot 将会:

  1. 从 Let’s Encrypt 获取受信任的 SSL 证书。
  2. 修改你的 NGINX server block,使其在 443 端口监听,并添加相应的 ssl_certificatessl_certificate_key 指令。
  3. 设置自动续期(默认会安装 systemd 定时器)。

验证 HTTPS

在浏览器中使用 https:// 打开你的域名。你应该看到锁形图标,表明证书有效。

自动续期

Certbot 的续期定时器会每天运行两次。要手动测试续期过程:

sudo certbot renew --dry-run

如果干运行成功,证书将在到期前自动续期。

完成! 你的 NGINX 服务器现在已通过免费且自动续期的 Let’s Encrypt 证书安全地提供 HTTPS 服务。 🎉

Source:

安装和配置 SSL(使用 Certbot 与 NGINX)

前置条件

  • 正在运行 NGINX 的服务器
  • 指向您服务器 IP 地址的域名
  • Root 或 sudo 权限

安装 Certbot

sudo apt update
sudo apt install certbot python3-certbot-nginx

获取 SSL 证书

运行交互式 Certbot 命令:

sudo certbot --nginx

在此过程中,系统会提示您:

  1. 输入您的电子邮件地址(用于续期通知)
  2. 同意 Let’s Encrypt 的服务条款
  3. 选择要保护的域名
  4. 是否将 HTTP 流量重定向到 HTTPS(推荐)

完成后,Certbot 将会:

  • 生成 SSL 证书
  • 自动更新您的 NGINX 配置
  • 重新加载 NGINX 并启用 HTTPS

验证 HTTPS 配置

Certbot 完成后,在浏览器中打开:

https://YOUR-DOMAIN-NAME

您应该在浏览器地址栏看到安全连接标识(🔒)。

自动证书续期

Let’s Encrypt 证书有效期为 90 天。Certbot 会自动设置续期计时器,您也可以手动测试:

sudo certbot renew --dry-run

此测试可确认您的 SSL 证书将在不影响服务的情况下自动续期。

Back to Blog

相关文章

阅读更多 »

RGB LED 支线任务 💡

markdown !Jennifer Davishttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%...

Mendex:我为何构建

介绍 大家好。今天我想分享一下我是谁、我在构建什么以及为什么。 早期职业生涯与倦怠 我在 17 年前开始我的 developer 生涯……