在 Debian 上使用 Let’s Encrypt 保护您的 Nginx 服务器,确保为您的网络应用程序提供稳健的加密和更高的安全性。这个简单的过程可以大大提高网站的可信度和性能。
⭐免费 SSL/TLS 证书: Let’s Encrypt 提供免费、自动和开放的证书,在不影响安全性的情况下节约成本。
⭐自动化: 利用 Certbot 轻松实现证书签发和更新自动化,减少管理开销。
⭐改进搜索引擎优化: HTTPS 深受搜索引擎青睐,可提高网站排名。
⭐增强安全性: 利用强大的加密功能保护敏感数据,确保服务器与客户端之间的安全连接。
⭐信任和信誉: 通过 HTTPS 挂锁图标赢得用户的信任,展示对安全的承诺。
⭐合规性: 满足数据保护的行业标准和监管要求。
通过在 Debian 上使用 Let’s Encrypt 保护 Nginx 服务器的安全,您可以为用户提供安全的浏览体验,同时获得提高搜索引擎优化和用户信任度的好处。
让我们深入了解在基于 Debian 的服务器上安装和配置 Let’s Encrypt 所需的步骤。
在为 Nginx 安装 Certbot 之前更新 Debian 软件包存储库
在安装 Certbot 之前,确保更新 Debian 系统中的软件包仓库和现有软件包至关重要。保持系统更新可确保您安装的是最新版本的 Certbot 及其依赖程序。
执行以下命令更新软件包库并升级现有软件包:
sudo apt update && sudo apt upgrade
安装 Certbot Nginx 插件
现在您的 Debian 系统已经更新,下一步就是安装 Certbot 及其 Nginx 插件。Nginx 插件至关重要,因为它能让 Certbot 与 Nginx 交互,自动获取和更新证书,并配置 Nginx 以使用这些证书。
运行以下命令安装 Certbot 和 Nginx 插件:
sudo apt install certbot python3-certbot-nginx
Certbot 配置和 SSL 证书生成
成功安装 Certbot 及其 Nginx 插件后,下一步就是运行 Certbot 为域名生成并安装 SSL 证书。为了指示 Certbot 我们正在使用 Nginx,我们使用了 –nginx 选项。运行 Certbot 的命令还包含其他各种选项,有助于提高设置的安全性。
–agree-tos选项告诉Certbot,你同意Let’s Encrypt的服务条款。–redirect选项指示Certbot设置一个从HTTP到HTTPS的永久301重定向,确保您网站的所有流量都经过加密。hsts选项会添加一个Strict-Transport-Security(严格传输安全)标头,确保与服务器的安全连接。最后,–staple-ocsp 选项可启用 OCSP Stapling 功能,该功能可在提高 SSL 协商性能的同时维护访问者隐私。
通过–email选项提供的电子邮件地址将被Let’s Encrypt用于发送与SSL证书相关的通知,如续期提醒和安全公告。
请将 [email protected] 替换为实际电子邮件地址,将 yourdomain.com 替换为域名。运行以下命令
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d yourdomain.com
成功执行命令后,Certbot 将为您的域名生成 SSL 证书,配置 Nginx 以使用该证书,并应用指定的安全选项。这样,您的服务器连接就安全了,您的网站也可以通过 HTTPS 访问。
其他 Certbot 配置方法
对于喜欢更有指导性和互动性方法的人,Certbot 提供了另一种方法,提示您选择信息和配置。下面介绍如何使用这种方法:
运行以下命令:
sudo certbot --nginx
Certbot 将启动互动会话。以下是您可能会遇到的提示:
-
输入电子邮件地址(用于紧急更新和安全通知): 提供您的电子邮件地址。Let’s Encrypt 将使用该地址与你的证书进行通信。
-
同意 Let’s Encrypt 服务条款: 您将被要求同意服务条款。输入 A 表示同意。
-
与电子前线基金会共享你的电子邮件,以获取他们的工作更新: 如果你想支持电子前沿基金会,输入 Y 表示同意。否则,输入 N 表示否。
-
您希望为哪些域名激活 HTTPS: Certbot 将显示它可以签发证书的域名。输入与您的域名相对应的数字,或全部留空。
-
选择适当的操作: 您可以选择
✨1: 尝试重新安装证书
✨2: 更新和更换证书(每 7 天限制 ~5 次)
选择适合您需要的选项。
-
选择是否将 HTTP 流量重定向到 HTTPS:系统会询问你是否要将 HTTP 流量重定向到 HTTPS。这对大多数网站都是可取的:
✨1: 不重定向 - 不再更改网络服务器配置。
✨2: 重定向 - 将所有请求重定向到安全的 HTTPS 访问。
选择选项 2 可提高安全性。
完成所有提示后,Certbot 将输出一条与前面提到的类似的信息,显示证书文件的位置和更多信息。
证书续期试运行
在执行自动续订计划之前,最好先确认续订流程是否正常运行。为此,您可以启动一次模拟运行,在不做任何实际更改的情况下模拟续订流程:
sudo certbot renew --dry-run
设置证书续订计划
如果试运行没有任何问题,现在就可以开始安排证书自动更新了。首先,使用此命令在编辑模式下打开 crontab 文件:
sudo crontab -e
然后,在文件底部添加以下一行。这一行设置了每天凌晨 2:30 的更新检查:
30 2 * * * /usr/bin/certbot renew --quiet
保存并关闭文件后,您就成功设置了一个自动程序。每天,cron 都会检查是否有证书需要更新。除非出现错误,否则 –quiet 标志可确保该任务在后台运行,不产生输出。
使用 NGINX 配置增强 SSL
在这部分可选内容中,您将调整域名的 NGINX 配置以优化性能。这包括设置 SSL 证书、配置会话参数和实施安全增强。
编辑 NGINX 配置文件
首先,您需要访问 NGINX 中域的配置文件。执行以下命令:
sudo nano /etc/nginx/sites-available/your_domain
这将在名为 nano 的文本编辑器中打开域名的配置文件。进入后,在服务器块中进行以下调整。
指定 SSL 证书和密钥
首先,设置 SSL 证书及其相应私钥的路径:
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
配置 SSL 会话
现在,您需要配置 SSL 会话参数。这将控制会话的存储时间,并确保有效重建安全连接:
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # approximately 40000 sessions
ssl_session_tickets off;
配置 Diffie-Hellman 参数
为进一步提高安全性,应配置 Diffie-Hellman (DH) 参数。DH 算法可确保在建立 SSL/TLS 连接时进行安全的密钥交换。
首先,生成一个 Diffie-Hellman 参数文件。一般来说,密钥长度越长,安全性越高。常见的密钥长度为 2048 位和 4096 位。虽然 2048 位通常被认为已经足够,但选择 4096 位会提供更高的安全性,尽管会牺牲性能。在做出决定前,请考虑您的安全要求和服务器的能力。
要生成 2048 位 DH 参数文件,请使用以下命令:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
另外,为了提高安全性,也可以通过执行此命令创建 4096 位密钥:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
生成文件后,在 NGINX 配置中指定其位置。用刚刚创建的文件的路径更新 ssl_dhparam 指令:
ssl_dhparam /etc/ssl/certs/dhparam.pem;
设置协议和密码
为确保高安全性和兼容性,请指定应使用哪些 SSL 协议和密码:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers [long string of ciphers here];
ssl_prefer_server_ciphers off;
实施 HSTS
添加 HTTP 严格传输安全(HSTS)以执行安全连接:
add_header Strict-Transport-Security "max-age=63072000" always;
启用 OCSP Stapling
OCSP stapling 是一项改进 SSL 证书验证过程的功能。打开它可确保使用根 CA 和中间证书验证信任链:
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
指定 DNS 解析器
最后,设置 DNS 解析器的 IP 地址。这对 OCSP 装订至关重要:
resolver 1.1.1.1
如果不想使用 Cloudflare 提供的解析器,请确保将 1.1.1.1 替换为解析器的实际 IP 地址。
验证并应用更改
完成后,保存并退出文件。验证 NGINX 配置以确保没有语法错误至关重要。运行此命令进行检查:
sudo nginx -t
如果没有问题,请通过重新加载 NGINX 来应用更改:
sudo systemctl restart nginx
最终总结
在本文中,我们介绍了在 Debian 10、11 和 12 上使用 Let’s Encrypt SSL 证书保护 Nginx 的安全。我们强调了 SSL 证书对服务器和客户端之间安全通信的重要性。从安装 Certbot 开始,我们讲解了如何从 Let’s Encrypt 获取免费 SSL 证书,配置 Nginx 以使用证书,使用 cron 作业自动更新,以及使用 Diffie-Hellman 参数增强安全性。
最后,监控日志和定期更新系统是必不可少的。这些做法将帮助你随时了解潜在问题,保护服务器免受最新安全漏洞的侵害。
Welcome to our website