文档中心
Nginx閰嶇疆SSL璇佷功鍚庤闂粛鏄剧ず涓嶅彈淇′换锛?姝ュ交搴曡В鍐筹紒
时间 : 2025-09-27 16:27:46浏览量 : 3

当你辛辛苦苦给网站配置了SSL证书,满心期待打开浏览器看到一把“小绿锁”,结果却弹出“您的连接不是私密连接”或“证书不受信任”的警告时,是不是瞬间血压飙升?别急!会用最直白的语言+实操案例,带你一步步排查和解决问题。
一、为什么Nginx配置了SSL证书仍“不受信任”?
SSL证书的作用是加密数据传输,但浏览器是否信任它取决于以下关键点:
- 证书来源是否可靠(比如是否来自Let's Encrypt、DigiCert等权威机构)
- 证书链是否完整(就像身份证需要公安局盖章才有效)
- 配置是否正确(比如Nginx漏了关键参数)
? 举个栗子:
小明从某宝买了超便宜的SSL证书,配置后浏览器警告“不可信”。原因很可能是:
1. 商家自签的证书(相当于自己刻了个“公章”,浏览器不认)
2. 漏装了中间证书(只给了“身份证”,没给“公安局证明”)。
二、5步排查法+解决方案
第1步:检查证书类型——别用自签名证书
- 自签名证书:自己生成的免费证书,适合测试环境。
(效果等同于在纸条上写“我是好人”,浏览器当然不认)
- 权威CA证书:必须购买或申请免费证书(如Let's Encrypt)。
? 解决方案:
```bash
申请Let's Encrypt免费证书(用Certbot工具)
sudo certbot --nginx -d yourdomain.com
```
第2步:确认证书链完整——缺一不可
完整的证书链包含:
1. 服务器证书(你的网站身份证)
2. 中间证书(CA机构的证明)
3. 根证书(最高级认证,预装在浏览器里)
? 常见错误:
只配置了服务器证书,忘记合并中间证书。
用文本编辑器将`域名.crt`和`中间证书.crt`合并成一个文件:
--BEGIN CERTIFICATE--
(你的域名证书内容)
--END CERTIFICATE--
(中间证书内容)
--END CERTIFICATE--
然后在Nginx配置中指向合并后的文件:
```nginx
ssl_certificate /path/to/merged.crt;
ssl_certificate_key /path/to/your.key;
第3步:检查Nginx配置——参数别漏写
一个完整的SSL配置示例:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/nginx/ssl/merged.crt;
合并后的证书路径
ssl_certificate_key /etc/nginx/ssl/your.key;
私钥路径
强化安全性
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
...其他配置...
}
?? 易错点:漏写`ssl_prefer_server_ciphers on;`可能导致老旧浏览器不兼容。
第4步:验证443端口和防火墙
即使配好SSL,如果外部无法访问443端口也是白搭!
? 快速检测工具:
检查端口是否开放
telnet yourdomain.com 443
或使用在线工具:
https://www.yougetsignal.com/tools/open-ports/
如果发现端口不通,需检查:
1. Nginx是否监听443端口(`listen 443 ssl;`)
2. 云服务器的安全组规则是否放行443端口
第5步:终极测试——用SSL Labs评分
访问 [SSL Labs测试工具](https://www.ssllabs.com/ssltest/) ,输入你的域名。它会告诉你:
- ?? “Chain issues incomplete” → 缺中间证书
- ?? “Uses weak encryption” → SSL协议或加密套件太旧

三、其他可能性排查表
| 现象 | 可能原因 | 解决方案 |
||-|-|
| Chrome显示ERR_CERT_AUTHORITY_INVALID | CA机构不被信任 | 换Let's Encrypt/DigiCert等主流CA |
| “NET::ERR_CERT_COMMON_NAME_INVALID” | 域名不匹配 | 确保证书包含所有子域名(如配通配符*.yourdomain.com) |
| iOS设备提示不安全 | SNI未启用 | Nginx中确保监听443端口的server块包含`server_name` |
??
遇到Nginx的SSL警告时,按这个顺序排查:
1?? 换权威CA的证→2??补全证链→3??核对Nginx参数→4??查端口防火墙→5??用工具验证
搞定这些后,你的网站就能稳稳戴上“小绿锁”啦! (如果还不行,评论区甩出你的报错截图~)
TAG:nginx配置ssl证书 访问不受信,nginx ssl_ciphers,nginx的ssl配置,nginx ssl配置详解,nginx如何配置ssl证书