文档中心
NginxSSL璇佷功澶辨晥鎬庝箞鍔烇紵5涓父瑙佸師鍥犲強淇鏂规硶璇﹁В
时间 : 2025-09-27 16:26:09浏览量 : 4

SSL证书是网站安全的“门锁”,一旦失效,轻则导致浏览器警告,重则让用户数据暴露在风险中。如果你用Nginx做Web服务器,突然遇到证书失效问题,别慌!本文用大白话+真实案例,带你快速定位和解决。
一、为什么Nginx的SSL证书会失效?(根本原因图解)
SSL证书失效就像“过期牛奶”——要么过了保质期,要么储存不当。以下是5个高频场景:
1. 证书过期(最常见!)
- 案例:2025年某电商网站流量暴跌80%,查了半天发现SSL证书过期3天,所有用户访问时看到红色警告页。
- 检查命令:
```bash
openssl x509 -enddate -noout -in /path/to/certificate.crt
```
输出类似:`notAfter=Dec 31 23:59:59 2025 GMT`
2. 证书链不完整
- 原理:浏览器需要从你的站点证书→中间CA→根CA完整信任链。如果漏掉中间证书,就像快递只送到中转站却不派送。
- 错误示例:
```nginx
ssl_certificate /path/to/site.crt;
只配置了站点证书
缺少 ssl_certificate_key /path/to/key.key;
- 修复方案:合并中间证书到站点证书文件:
cat site.crt intermediate.crt > combined.crt
3. Nginx配置未重载
- 经典踩坑:更新了证书文件,但忘记让Nginx重新加载配置。
- 正确操作:
sudo nginx -t
先测试配置语法
sudo systemctl reload nginx
平滑重载(不断开现有连接)
```
4. SNI(服务器名称指示)问题
- 场景:一台服务器托管多个HTTPS站点,但旧版Android或IE访问异常。
- 解决方案:确保Nginx配置明确指定`server_name`并开启SNI支持:
```nginx
server {
listen 443 ssl;
server_name example.com;
关键!
ssl_certificate /path/to/cert_for_example.com.crt;
...
}
```
5. HSTS策略冲突
- 危险操作:曾启用过HSTS(强制HTTPS),但临时改用自签名证书测试,导致浏览器拒绝访问。
- 急救措施:Chrome地址栏输入`chrome://net-internals/
hsts` ,删除该域名的HSTS记录。
二、高级排查技巧(附诊断命令)
??工具1:OpenSSL模拟握手
```bash
openssl s_client -connect example.com:443 -servername example.com | openssl x509 -noout -dates
输出会显示证书有效期和颁发者信息。
??工具2:在线检测
- [SSL Labs测试](https://www.ssllabs.com/ssltest/) :直接输入域名,自动检查证书链、协议支持等。
三、防患于未然的3个建议
1. 自动化续期
使用Let's Encrypt免费证书+crontab定时任务:
```bash
0 */12 * * * certbot renew --quiet --post-hook "systemctl reload nginx"
```
2. 监控告警
- Prometheus+Blackbox_Exporter监控证书剩余天数
- Zabbix自定义项监控`openssl x509`输出
3. 冗余备份
在`/etc/nginx/conf.d/ssl_backup.conf`保留旧版本配置,出问题时秒级回滚。
四、真实故障复盘
某金融平台凌晨突发事故——用户APP无法登录。运维团队排查流程:
1. APP日志显示TLS握手失败 →
2. Nginx错误日志发现"no valid SSL certificate" →
3. OpenSSL检查发现中间CA被吊销 →
4.紧急联系CA重新签发并更新链文件 →
5.总耗时47分钟恢复。
教训:即使未到期,CA吊销也会导致失效(如私钥泄露时)!
:Nginx SSL问题看似复杂,实则90%集中在以上几点。按本文步骤排查+日常做好监控续期,你的HTTPS大门就能稳稳守住!
TAG:ngalain ssl证书失效,ssl证书 nginx,ssl证书错误怎么解决,ssl证书错误,ssl certificate unknown,ssl证书不可信怎么解决