ssl新闻资讯

文档中心

NginxSSL涓棿璇佷功閰嶇疆璇﹁В鍘熺悊銆侀棶棰樻帓鏌ヤ笌瀹炴垬妗堜緥

时间 : 2025-09-27 16:26:04浏览量 : 3

2NginxSSL涓棿璇佷功閰嶇疆璇﹁В鍘熺悊銆侀棶棰樻帓鏌ヤ笌瀹炴垬妗堜緥

在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证书