centos nginx ssl证书更新流程
导读:CentOS 上 Nginx SSL 证书更新流程 一 准备与检查 确认系统与服务:建议使用 CentOS 7/8,并确保 Nginx 已安装且运行正常。 备份现有证书与密钥(可选但强烈推荐): sudo cp /etc/pki/tls/...
CentOS 上 Nginx SSL 证书更新流程
一 准备与检查
- 确认系统与服务:建议使用 CentOS 7/8,并确保 Nginx 已安装且运行正常。
- 备份现有证书与密钥(可选但强烈推荐):
sudo cp /etc/pki/tls/certs/your_domain.crt /etc/pki/tls/certs/your_domain.crt.bak
sudo cp /etc/pki/tls/private/your_domain.key /etc/pki/tls/private/your_domain.key.bak - 检查 Nginx 配置语法:
sudo nginx -t - 查看错误日志定位问题:
tail -f /var/log/nginx/error.log
以上步骤有助于在替换证书前确保环境与配置可用,降低更新风险。
二 使用 Certbot 自动更新(Let’s Encrypt)
- 安装 Certbot 与 Nginx 插件(按系统选择其一):
- CentOS 7:sudo yum install epel-release & & sudo yum install certbot python2-certbot-nginx
- CentOS 8/Stream:sudo yum install epel-release & & sudo yum install certbot python3-certbot-nginx
- 方式 A(推荐)— Nginx 插件自动修改配置并热更新:
sudo certbot --nginx -d your_domain.com -d www.your_domain.com
该方式会自动把证书写入 Nginx 配置并重启/热加载服务。 - 方式 B — 仅获取/续期证书(手动管理 Nginx 配置):
sudo certbot certonly --nginx -d your_domain.com
常见证书路径为:/etc/letsencrypt/live/your_domain.com/fullchain.pem(证书链)与 /etc/letsencrypt/live/your_domain.com/privkey.pem(私钥),请在 Nginx 的 server 443 段正确配置 ssl_certificate 与 ssl_certificate_key。 - 验证与生效:
sudo nginx -t & & sudo systemctl reload nginx
以上流程覆盖一键自动化与手动部署两种常见场景,适合大多数站点。
三 手动更新证书(自购或企业 CA)
- 上传新证书与私钥到服务器(建议统一到 /etc/pki/tls/ 或 /etc/nginx/ssl/):
sudo cp new_certificate.crt /etc/pki/tls/certs/your_domain.crt
sudo cp new_private_key.key /etc/pki/tls/private/your_domain.key - 设置私钥权限(仅 root 可读):
sudo chmod 600 /etc/pki/tls/private/your_domain.key - 在 Nginx 配置中确认证书路径(示例):
ssl_certificate /etc/pki/tls/certs/your_domain.crt;
ssl_certificate_key /etc/pki/tls/private/your_domain.key; - 语法检查与热重载:
sudo nginx -t & & sudo systemctl reload nginx - 验证:
openssl s_client -connect your_domain:443 -servername your_domain
以上步骤适用于非 Let’s Encrypt 证书或需要自定义证书存放路径的场景。
四 自动续期与验证
- 测试续期流程(不写盘,安全验证):
sudo certbot renew --dry-run - 设置定时任务(证书有效期 90 天,建议每周或每月尝试续期):
sudo crontab -e
示例(每周日凌晨 2:00 续期,3:00 重载 Nginx):
0 2 * * 0 /usr/bin/certbot renew > > /var/log/letsencrypt/renew.log 2> & 1
0 3 * * 0 /usr/bin/systemctl reload nginx > > /var/log/nginx/reload.log 2> & 1 - 强制续期(仅在必要时使用):
sudo certbot renew --force-renewal - 强制续期后务必重载 Nginx 并再次验证站点证书是否已更新。
以上做法可确保证书临近到期时自动更新,避免过期导致的中断。
五 常见问题与排查
- Nginx 插件不可用:执行 sudo yum install python-certbot-nginx(或 python3-certbot-nginx)后重试。
- 权限错误:私钥应为 600,证书 644,属主 root。
- 配置路径不一致:确认 ssl_certificate/ssl_certificate_key 指向实际证书文件(Let’s Encrypt 默认在 /etc/letsencrypt/live/your_domain/)。
- 使用了 CDN/反向代理/负载均衡:需在各厂商控制台同步更新证书并刷新缓存,否则浏览器可能仍显示旧证书。
- 验证命令:
- 查看站点证书链与有效期:openssl s_client -connect your_domain:443 -servername your_domain
- 查看 Nginx 是否加载新证书:在浏览器查看证书详情或再次执行上面的 OpenSSL 命令。
以上排查要点可快速定位更新失败或“已更新但浏览器仍显示旧证书”的常见原因。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos nginx ssl证书更新流程
本文地址: https://pptw.com/jishu/765408.html
