当前位置: 首页 > backend >正文

如何在 Linux 环境下使用 Certbot 自动生成 SSL 证书并部署到 Nginx 服务中

SSL加密技术对网络传输的数据安全非常重要,然而,申请SSL证书却很麻烦,而且免费的SSL证书最多使用3个月,使得广大程序员十分不方面,流程如下

这里风云给大家介绍一个工具,自动帮我们完成该项工作,使用Certbot 工具生成 SSL 证书并自动部署到 Nginx 服务中,主要步骤如下:

安装 Certbot

配置 Nginx

获取和安装 SSL 证书

自动部署 SSL 证书到 Nginx

配置自动续期

1. 安装 Certbot

Certbot 是一个用于自动化获取和管理 SSL 证书的工具,它与 Let's Encrypt 证书颁发机构紧密集成,支持自动化配置 SSL 证书。你可以使用以下命令安装 Certbot:

1.1 安装 Certbot 和 Nginx 插件

首先,确保你的系统包管理器已经更新,然后安装 Certbot 和 Nginx 插件。

对于 Ubuntu/Debian 系统

sudo apt updatesudo apt install certbot python3-certbot-nginx

对于 CentOS/RHEL 系统

sudo yum install epel-releasesudo yum install certbot python3-certbot-nginx

对于 Fedora 系统

sudo dnf install certbot python3-certbot-nginx

安装完成后,你可以使用以下命令来检查 Certbot 是否正确安装:

certbot --version

2. 配置 Nginx

在生成 SSL 证书之前,确保你的 Nginx 配置正确,并且已经指向你的网站根目录。

2.1 配置虚拟主机

编辑 Nginx 配置文件(通常是 /etc/nginx/sites-available/default 或 /etc/nginx/nginx.conf,具体路径可能会有所不同)来配置虚拟主机。假设你的域名是 example.com,可以参考以下配置:

server {listen 80;server_name example.com www.example.com;root /var/www/html;  # 网站根目录index index.html index.htm;location / {try_files $uri $uri/ =404;}
}

保存并退出配置文件后,重新加载 Nginx 配置:

sudo nginx -t  # 测试 Nginx 配置文件是否有误

sudo systemctl reload nginx  # 重新加载配置

确保 example.com 的 DNS 记录已经正确指向你的服务器 IP。

3. 使用 Certbot 获取 SSL 证书

3.1 使用 Certbot 自动获取和配置 SSL 证书

Certbot 支持通过 自动化插件 来生成和安装 SSL 证书。我们将使用 Certbot 自带的 Nginx 插件来自动生成和安装 SSL 证书,并自动更新 Nginx 配置。

运行以下命令:

sudo certbot --nginx -d example.com -d www.example.com

此命令会做以下几件事:

自动与 Let's Encrypt 通信并请求 SSL 证书。

自动配置 Nginx 来启用 SSL,并配置 HTTPS。

自动重启 Nginx 服务以使更改生效。

说明:

--nginx 指示 Certbot 使用 Nginx 插件进行自动配置。

-d example.com -d www.example.com 指定需要申请 SSL 证书的域名。

3.2 证书验证

Certbot 会提示你输入电子邮件地址,并要求你同意 Let's Encrypt 的服务条款。

输入一个有效的电子邮件地址,以便在证书即将过期时接收到提醒。

同意服务条款。

如果一切顺利,你将看到类似以下的输出:

Successfully obtained SSL certificate for example.com and www.example.com

4. 自动部署 SSL 证书到 Nginx

4.1 Certbot 自动配置 Nginx

Certbot 会自动为你配置 Nginx,使得 HTTPS 生效。如果 Nginx 配置中有问题或需要手动调整,你可以查看 Nginx 配置文件,确保它包含以下内容:

server {listen 443 ssl http2;server_name example.com www.example.com;ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root /var/www/html;index index.html index.htm;}
}server {listen 80;server_name example.com www.example.com;return 301 https://$host$request_uri;  # 强制跳转 HTTPS
}

4.2 验证配置

在浏览器中访问 https://example.com,你应该看到网站已经通过 HTTPS 加载,并且地址栏显示安全锁。

如果需要检查 SSL 证书的有效性,可以使用工具如 SSL Labs' SSL Test 来验证证书配置和网站安全性。

5. 配置自动续期

Let's Encrypt 证书有效期为 90 天,因此需要定期续期。Certbot 提供了自动续期功能。

5.1 设置自动续期

Certbot 在安装时默认会为你设置定时任务(cron job)来自动续期证书。你可以通过以下命令检查续期设置:

sudo systemctl status certbot.timer

5.2 手动续期

如果你想手动测试续期,可以运行以下命令:

sudo certbot renew --dry-run

此命令不会实际续期证书,但会模拟续期过程,以确保自动续期功能正常。

Certbot 和 Let's Encrypt 提供了免费的 SSL 证书,帮助网站快速实现 HTTPS 加密,确保安全的通信和用户数据保护。

http://www.xdnf.cn/news/3292.html

相关文章:

  • 【论文阅读】APMSA: Adversarial Perturbation Against Model Stealing Attacks
  • 7.软考高项(信息系统项目管理师)-资源管理
  • C++初阶-string类2
  • [PRO_A7] SZ501 FPGA开发板简介
  • Roboflow标注数据集
  • crashpad 编译
  • 时态--00--总述
  • 1254. 【动态规划】单词的划分
  • KUKA机器人不同的用户权限详细介绍
  • vue+django农产品价格预测和推荐可视化系统[带知识图谱]
  • 0901context_useReducer_状态管理-react-仿低代码平台项目
  • 如何写好Verilog状态机
  • 【Bootstrap V4系列】学习入门教程之 布局
  • w~大模型~合集14
  • 用电数据 一网打尽“多回路计量电表”让能耗管理更简单
  • 【文献分享】Modelling the species-area提供数据和代码
  • 技术研究 | 推荐系统训练后多分类属性遗忘:双组分损失优化与效用空间正则设计
  • GitHub修炼法则:第一次提交代码教学(Liunx系统)
  • Redis Info 性能指标描述
  • AIGC 大模型微调实战:中小企业如何用自有数据训练专属 AI 模型?
  • TCP三次握手、四次挥手+多线程并发处理
  • 昆仑万维:AI短剧出海布局,中型公司如何突破AI商业化?
  • 可视化图解算法:判断是否完全二叉树
  • PH热榜 | 2025-04-30
  • 如何使用C语言手搓斐波那契数列?
  • 如何设计一个100w QPS高并发抢券系统
  • 海外社交软件技术深潜:实时互动系统与边缘计算的极限优化
  • 借助电商 API 接口实现电商平台商品数据分析的详细步骤分享
  • MCP 服务器搭建【sse 类型】实现上市公司年报查询总结, 127.0.0.1:8000/sse直接配置配合 Cherry Studio使用简单
  • 徐州旅行体验分享:从扬州出发的 24 小时碳水之旅