文档中心
NginxSSL璇佷功澶辨晥鐨?澶у師鍥犲強蹇€熶慨澶嶆寚鍗?txt
时间 : 2025-09-27 16:26:09浏览量 : 3

SSL证书是网站安全的"门神",一旦失效,轻则浏览器弹出红色警告吓跑用户,重则导致数据裸奔被黑客截获。作为运维老司机,我见过太多Nginx证书翻车现场——有的因为时间错乱变成"穿越者",有的像超市优惠券一样过期作废。本文将用真实案例拆解5大常见故障,手把手教你排雷。(文末附一键检测脚本)
一、证书过期:最典型的"保质期陷阱"
案例重现:2025年某电商大促当天,客服突然接到海量投诉"网站不安全"。排查发现证书已在凌晨过期,但值班人员未设置续期提醒。
原理剖析:
- 商业证书通常1年有效期(Let's Encrypt只有90天)
- 服务器时间不同步会引发"提前过期"假象
修复方案:
```bash
查看证书过期时间(将example.com替换为你的域名)
openssl x509 -noout -dates -in /etc/nginx/ssl/example.com.crt
自动续期工具推荐
certbot renew --dry-run
Let's Encrypt专用
```
二、证书链不完整:就像快递丢了中间站
故障现象:Chrome显示"ERR_CERT_AUTHORITY_INVALID",但Safari却能正常访问。
根因诊断:
- 缺失中间证书(Intermediate CA)
- 常见于自签名或廉价证书
完整配置示范:
```nginx
server {
ssl_certificate /path/to/fullchain.pem;
必须包含主证+中间证
ssl_certificate_key /path/to/privkey.pem;
验证配置是否正确
nginx -t && systemctl reload nginx
}
三、私钥不匹配:钥匙和锁芯对不上号
经典翻车现场:某企业更换证书后,Nginx报错`SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch`
排查技巧:
检查公钥指纹是否一致
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.key | openssl md5
四、SNI配置错误:多域名网站的"张冠李戴"
当同一个IP托管多个HTTPS站点时,需要Server Name Indication(SNI)来区分:
listen 443 ssl;
server_name a.com;
ssl_certificate /path/to/a.com.crt;
server_name b.com;
ssl_certificate /path/to/b.com.crt;
五、协议/算法过时:安全防线自己开了后门
安全检查清单:
1. 禁用TLS 1.0/1.1(PCI DSS强制要求)
2. 关闭弱加密套件如RC4、DES
3. 启用HSTS防止降级攻击
优化配置模板:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=63072000" always;
【运维急救包】一键检测脚本
保存为`check_ssl.sh`并运行:
!/bin/bash
DOMAIN="yourdomain.com"
PORT=443
echo "?? 正在诊断 $DOMAIN ..."
检查过期时间
echo "?? 证书有效期:"
openssl s_client -connect $DOMAIN:$PORT -servername $DOMAIN 2>/dev/null | \
openssl x509 -noout -dates
OCSP装订检查
echo "?? OCSP装订状态:"
openssl s_client -connect $DOMAIN:$PORT -status < /dev/null > /dev/null
TLS协议支持情况
echo "??? TLS协议支持:"
nmap --script ssl-enum-ciphers -p $PORT $DOMAIN
SSL Labs评分检测
echo "? SSL Labs评分生成中(可能需要等待)..."
curl https://api.ssllabs.com/api/v3/***yze?host=$DOMAIN | jq '.endpoints[0].grade'
遇到问题别慌张,按照这个检查清单逐步排查,你的Nginx很快就能恢复安全防线!建议收藏本文并设置日历提醒,在证书到期前30天自动发送告警通知。
TAG:nginx ssl证书失效,nginx ssl_preread,nginxssl证书配置,nginx安装ssl证书,linux nginx ssl证书