文档中心
NginxSSL涓棿璇佷功閰嶇疆璇﹁В鍘熺悊銆侀棶棰樻帓鏌ヤ笌瀹炴垬妗堜緥
时间 : 2025-09-27 16:26:04浏览量 : 3

在HTTPS加密通信的世界里,SSL证书就像一张数字身份证,而中间证书(Intermediate Certificate)则是这张身份证的“担保人”。很多运维人员在配置Nginx时,明明安装了正确的SSL证书,浏览器却依然报错“证书链不完整”,这往往是因为忽略了中间证书的作用。本文将以通俗易懂的方式,结合实战案例,带你彻底搞懂Nginx中SSL中间证书的配置逻辑。
一、为什么需要中间证书?一个快递包裹的比喻
想象你要收一份重要快递:
- 根证书(Root CA):像国家邮政总局,极少亲自派件(直接签发证书)。
- 中间证书(Intermediate CA):像顺丰、中通等快递公司,由邮政总局授权派件。
- 域名证书(End-entity Certificate):就是你手上的具体包裹。
如果快递员(浏览器)只看到包裹(域名证书),但没看到顺丰的工作证(中间证书),就会怀疑包裹的真实性。这就是为什么必须配置完整的证书链(Chain of Trust)。
二、Nginx中常见的中间证书错误案例
案例1:浏览器提示"NET::ERR_CERT_AUTHORITY_INVALID"
某电商网站升级HTTPS后,部分用户看到如下警告:
```bash
Chrome报错:此服务器无法证明它是www.example.com...
```
原因排查:
1. 检查Nginx配置发现只有域名证书:
```nginx
ssl_certificate /path/to/domain.crt;
缺少中间证书!
```
2. 通过OpenSSL验证:
```bash
openssl s_client -connect example.com:443 -showcerts | grep -i "verify"
输出显示`Verify error:unable to get local issuer certificate`。
解决方案:
将域名证书与中间证书合并为一个文件:
cat domain.crt intermediate.crt > fullchain.crt
然后修改Nginx配置:
```nginx
ssl_certificate /path/to/fullchain.crt;
ssl_certificate_key /path/to/private.key;
案例2:Android设备无法访问而PC正常
某新闻APP的API服务器出现诡异现象:
- PC浏览器访问正常
- Android手机提示"连接不安全"
根本原因:
不同设备对中间证书的缓存策略不同。Android较旧版本可能未预装某些中间CA。
1. 使用SSL Labs测试工具检查缺失的中间证:
https://www.ssllabs.com/ssltest/
2. 补全中级CA到根CA的全链路:
cat domain.crt intermediate1.crt intermediate2.crt > fullchain.crt
三、高级技巧:OCSP Stapling优化方案
传统验证方式需要浏览器实时查询CA服务器,可以通过OCSP装订提升性能:
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/root+intermediate.crt;
必须包含根和中级CA
resolver 8.8.8.8 valid=300s;
效果对比:
| 配置方式 | TLS握手时间 | CA服务器依赖 |
|-|-|--|
| 无OCSP装订 | +200ms | 是 |
| 开启OCSP装订 | <50ms | 否 |
四、自动化管理推荐工具
1. Certbot自动续期:
certbot renew --pre-hook "nginx -s stop" --post-hook "nginx"
自动处理包括中间证在内的完整链更新。
2. OpenSSL调试命令集锦:
查看实际生效的证书链
openssl s_client -connect example.com:443 -servername example.com
验证文件完整性
openssl verify -CAfile root.crt -untrusted intermediate.crt domain.crt
五、 checklist
? 必做项
- `ssl_certificate`必须包含域名证+中级证合并文件
- `ssl_trusted_certificate`需包含中级+根证(OCSP场景)
- Android兼容需测试二级以上中级证
?? 避坑指南
- ?不要将私钥和证书放在同一文件
- ?不要遗漏跨品牌中级证(如DigiCert有时需要两层级)
- ?不要在未测试的情况下去除根证
通过以上方法,你的Nginx HTTPS服务将建立起牢不可破的信赖链。遇到问题时不妨多使用OpenSSL命令行工具“望闻问切”,这往往是排查SSL问题的终极武器。
TAG:nginx ssl中间证书,nginxssl证书配置,nginx ssl_ciphers,nginx的ssl证书