Rocky Linux Nginx 自动更新免费 SSL, 全流程实战

  • 2025-06-24 13:33:12
  • 447

Let’s Encrypt 是由非营利性组织 Internet Security Research Group (ISRG) 推动的免费、自动化、开源的证书颁发机构(CA)。

它采用 ACME 协议,让用户能够轻松获取和自动续期 TLS/SSL 证书,从而为网站提供 HTTPS 加密连接。

自 2016 年推出以来,Let’s Encrypt 已颁发数亿份证书,大幅降低了 HTTPS 部署门槛。

环境准备

确认系统版本

Rocky Linux 8/9,内核 4.18+ 或 5.14+,原生支持现代加密模块。

安装 EPEL 源

sudo dnf install -y epel-release

启用 EPEL 并更新

sudo dnf update -y

☁️ 安装 Certbot 与 Nginx 插件

sudo dnf install -y certbot python3-certbot-nginx

certbot:Let’s Encrypt 官方客户端

python3-certbot-nginx:自动修改 Nginx 配置的插件

首次签发免费 SSL

执行一键签发命令

命令说明

-d:指定域名,可多次使用

--email:接收证书更新提醒

--agree-tos:同意服务条款

--redirect:自动启用 HTTP→HTTPS 强制跳转

成功示例

浏览器访问 https://yourdomain.com 显示绿色小锁

Nginx 配置文件自动添加 ssl_certificate 与 ssl_certificate_key

自动续期配置

验证定时任务

sudo systemctl list-timers | grep certbot

默认每 12 小时执行一次续期检测

手动测试续期

sudo certbot renew --dry-run

输出 Congratulations, all renewals succeeded. 则配置生效

排查与优化

端口未开放

sudo firewall-cmd --permanent --add-service=https

sudo firewall-cmd --reload

域名未解析

确保 DNS A/AAAA 记录指向当前服务器公网 IP

SELinux 拒绝

sudo setenforce 0 # 测试期间

sudo setenforce 1 # 完成后恢复

验证与监控

检查到期时间

sudo certbot certificates

日志位置

/var/log/letsencrypt/letsencrypt.log

常见问题

Permission denied → 使用 sudo

Connection refused → 确认 Nginx 正常运行