# fullchain是什么？定义、例子与常见误区

> fullchain 是依次包含站点证书和中间证书的 PEM 文件，让客户端能把站点证书连到受信任的根证书。

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

fullchain 文件最常见的是 Certbot 生成的 `fullchain.pem`，它按顺序把站点（叶子）证书和[中间证书](https://ssl.sh/zh/glossary/intermediate-certificate/)拼接在一起，每张都是 [PEM](https://ssl.sh/zh/glossary/pem/) 格式。Certbot 在 `/etc/letsencrypt/live/<域名>/` 下生成 `cert.pem`（只有站点证书）、`chain.pem`（只有中间证书）、`fullchain.pem`（两者都有）和 `privkey.pem`。根证书通常不放进去，因为客户端的信任库里已经有了。

## 为什么重要
握手时，服务器必须把客户端构建证书路径所需的证书都发过去。如果只配置了站点证书，部分客户端（curl、Java、一些安卓设备、小程序或 App 内的网络库）会报"unable to get local issuer certificate"之类的错，而桌面浏览器可能因为能通过 [AIA](https://ssl.sh/zh/glossary/aia/) 补全或缓存过中间证书而看起来一切正常，所以这个问题特别隐蔽。宝塔面板"证书(PEM格式)"一栏、腾讯云下载包里的 `_bundle.crt`，都应该是完整链。nginx 在 `ssl_certificate` 里填 fullchain；Apache 2.4.8 起也可以直接把完整链放进 `SSLCertificateFile`。

## 例子
```bash
cat example.com.crt intermediate.crt > fullchain.pem
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null | grep -E "^ *[0-9] s:"
```

```nginx
ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
```

## 常见误区
- **证书链里要包含根证书。** 不需要，客户端用的是自己信任库里的根证书。
- **顺序无所谓。** 站点证书在最前，接着是签发它的中间证书，依此类推。
- **浏览器打得开，证书链就没问题。** 浏览器可能掩盖问题，应该用 curl、OpenSSL 或 [SSL 检测工具](https://ssl.sh/zh/tools/ssl-checker/)验证。

## 相关术语

- [证书链](https://ssl.sh/zh/glossary/certificate-chain/): 证书链是从网站终端证书经中间证书一直到受信任根证书的有序证书序列，每一张都由下一张签名。
- [中间证书](https://ssl.sh/zh/glossary/intermediate-certificate/): 中间证书是由根证书（或上级中间证书）签发、用来签发网站证书的 CA 证书，服务器必须把它和网站证书一起发送给客户端。
- [PEM](https://ssl.sh/zh/glossary/pem/): PEM 是一种把 DER 二进制数据做 Base64 编码、再用 BEGIN 和 END 行包起来的文本格式，是存放证书和私钥最常见的方式。
- [CRT 文件](https://ssl.sh/zh/glossary/crt-file/): CRT 文件是存放 X.509 证书的 .crt 或 .cer 文件，内容可能是 PEM 文本，也可能是二进制 DER，取决于生成它的平台。
- [AIA](https://ssl.sh/zh/glossary/aia/): AIA 即颁发机构信息访问，是 X.509 证书扩展，提供签发 CA 证书的下载地址，以及（可选的）该 CA 的 OCSP 服务地址。
- [根证书](https://ssl.sh/zh/glossary/root-certificate/): 根证书是位于证书链顶端、由 CA 自签名的证书，预装在操作系统或浏览器的信任库中，作为验证其他证书的信任锚。
- [CA Bundle](https://ssl.sh/zh/glossary/ca-bundle/): CA Bundle 是把多张 PEM 证书拼接在一起的文件，既可能是服务器要发送的中间证书链，也可能是客户端信任的根证书集合。
