# 证书链是什么？定义、例子与常见误区

> 证书链是从网站终端证书经中间证书一直到受信任根证书的有序证书序列，每一张都由下一张签名。

Source: https://ssl.sh/zh/glossary/certificate-chain/
Last updated: 2026-11-10

证书链是客户端把服务器的终端证书连接到其 [信任库](https://ssl.sh/zh/glossary/trust-store/) 中某个 [根证书](https://ssl.sh/zh/glossary/root-certificate/) 的一串证书：每张证书的颁发者名称等于下一张的主体名称，签名可以用下一张证书的公钥验证。服务器负责发送终端证书和中间证书，根证书由客户端本地提供，验证路径由客户端自己构建。

## 为什么重要
路径验证会检查链上每一环：签名、有效期、基本约束、名称约束、密钥用途，以及条件允许时的吊销状态。缺少中间证书、中间证书过期或顺序错乱，客户端就会报“unable to get local issuer certificate”等错误。由于存在 [交叉签名](https://ssl.sh/zh/glossary/cross-signing/)，同一张证书可能有多条合法路径，不同客户端会选择不同的路径，这就是为什么同一个网站在新手机上正常、在老旧安卓设备上却报错。在宝塔面板、云负载均衡或 CDN 上部署时，证书一栏要填完整链，而不是只填网站证书。

## 例子
```bash
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
```

查看输出中编号的 `s:`（主体）和 `i:`（颁发者）行，每个 `i:` 都应等于下一张证书的 `s:`。

## 常见误区
- **证书链文件里必须包含根证书。** 根证书可有可无，客户端也不会因为服务器发送了它就信任它，终端证书加中间证书就够了。
- **证书顺序无所谓。** 应当网站证书在前、各级签发者依次在后；有的客户端能容忍乱序，有的不能。
- **证书链验证通过就说明域名匹配。** 链验证和域名匹配是两个独立的检查步骤，两者都必须通过。

## 相关术语

- [中间证书](https://ssl.sh/zh/glossary/intermediate-certificate/): 中间证书是由根证书（或上级中间证书）签发、用来签发网站证书的 CA 证书，服务器必须把它和网站证书一起发送给客户端。
- [根证书](https://ssl.sh/zh/glossary/root-certificate/): 根证书是位于证书链顶端、由 CA 自签名的证书，预装在操作系统或浏览器的信任库中，作为验证其他证书的信任锚。
- [信任库](https://ssl.sh/zh/glossary/trust-store/): 信任库是操作系统、浏览器或编程语言运行时内置的一组根 CA 证书，验证证书链时以它们作为信任锚。
- [交叉签名](https://ssl.sh/zh/glossary/cross-signing/): 交叉签名是指由一个已被广泛信任的 CA 为另一个 CA 的现有密钥签发证书，使后者签发的证书也能链到老设备信任的根。
- [fullchain](https://ssl.sh/zh/glossary/fullchain/): fullchain 是依次包含站点证书和中间证书的 PEM 文件，让客户端能把站点证书连到受信任的根证书。
- [AIA](https://ssl.sh/zh/glossary/aia/): AIA 即颁发机构信息访问，是 X.509 证书扩展，提供签发 CA 证书的下载地址，以及（可选的）该 CA 的 OCSP 服务地址。
- [CA Bundle](https://ssl.sh/zh/glossary/ca-bundle/): CA Bundle 是把多张 PEM 证书拼接在一起的文件，既可能是服务器要发送的中间证书链，也可能是客户端信任的根证书集合。
