文档中心
Nginx閰嶇疆SSL璇佷功鏃犳晥锛?涓父瑙佸師鍥犲強瑙e喅鏂规璇﹁В
时间 : 2025-09-27 16:27:48浏览量 : 4

****
当你兴冲冲地为网站配置了SSL证书,却发现浏览器依然显示“不安全”或直接报错,是不是瞬间头皮发麻?别急,Nginx配置SSL证书无效的问题很常见,但90%的情况都能通过排查以下5类原因解决。本文用大白话+实操案例,带你快速定位问题。
一、证书文件路径或权限错误(最基础也最易忽略)
症状:Nginx启动失败或报错 `"cannot load certificate"`。
案例分析:
假设你的证书路径写的是 `/etc/nginx/ssl/cert.pem`,但实际文件放在了 `/home/user/cert.pem`。Nginx会直接罢工。
如何排查?
1. 检查路径:用 `ls -l /path/to/certificate` 确认文件是否存在。
2. 检查权限:Nginx默认以 `www-data` 用户运行,需确保证书可读:
```bash
chmod 644 /etc/nginx/ssl/*.pem
开放读权限
chown www-data:www-data /etc/nginx/ssl/*.pem
确保属主正确
```
二、证书链不完整(80%的“无效”根源)
症状:浏览器提示“此证书不受信任”,但证书明明已购买。
为什么?
SSL证书通常需要中间证书(Intermediate CA)来建立信任链。若只配置了域名证书(如 `domain.crt`),缺了中间证书,浏览器就无法验证合法性。
解决方案:
1. 合并证书链:将域名证书和中间证书合并成一个文件(顺序很重要!):
cat domain.crt intermediate.crt > combined.crt
```
2. Nginx配置中引用合并后的文件:
```nginx
ssl_certificate /path/to/combined.crt;
ssl_certificate_key /path/to/domain.key;
三、Nginx未监听443端口或SSL未启用
症状:访问HTTPS链接直接超时或连接被拒绝。
常见错误配置举例:
```nginx
server {
listen 80;
只监听了HTTP的80端口
server_name example.com;
ssl_certificate /path/to/cert.pem;
虽然配了证书但没启用!
}
```
正确写法:
listen 443 ssl;
关键!必须加ssl参数
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
```
四、加密套件或协议版本过时(兼容性问题)
症状:
- 老旧设备(如Android旧版本)无法访问。
- SSL Labs测试评级为B或更低。
优化方案:
在Nginx中禁用不安全的协议(如TLSv1.0/v1.1)和弱加密算法:
ssl_protocols TLSv1.2 TLSv1.3;
仅允许现代协议
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
强加密套件
ssl_prefer_server_ciphers on;
优先使用服务端配置
五、浏览器缓存或HSTS搞鬼
场景模拟:
你修复了所有配置并重启Nginx,但Chrome依然报错“您的连接不是私密连接”。
可能原因:
1. 浏览器缓存了之前的错误状态: Ctrl+F5强制刷新或隐身模式测试。
2. HSTS强制HTTPS:
- Chrome地址栏输入 `chrome://net-internals/
hsts`。
- 在“Delete domain security policies”中输入域名清理缓存。
终极排查工具
1. OpenSSL命令验证:
openssl s_client -connect example.com:443 -servername example.com | openssl x509 -noout -text
检查输出是否包含正确的域名和有效期。
2. 在线检测工具:
- [SSL Labs测试](https://www.ssllabs.com/ssltest/):直接显示缺失的中间证书。
- [Why No Padlock?](https://www.whynopadlock.com/) :快速定位混合内容问题。
checklist
? 路径和权限是否正确?
? 是否合并了完整的证书链?
? Nginx是否监听了443且启用了ssl参数?
? TLS协议和加密套件是否过时?
? 清除浏览器缓存/HSTS了吗?
按照以上步骤排查,99%的SSL无效问题都能解决。如果还不行——检查防火墙是否放行443端口,或者考虑重新签发证书吧!
TAG:nginx配置ssl证书无效,nginx配置证书链,nginx如何配置ssl证书,nginx替换ssl证书不生效