TLS 服务器必须先发送叶子证书,再发送中间证书(RFC 9846 §4.5.1 允许其余证书以任意顺序出现,但较旧的客户端要求按颁发者顺序排列)。根证书通常省略,因为客户端已经有了。缺少中间证书是一个经典错误,表现为“浏览器里正常,curl 里出错”:浏览器可能通过 AIA 的 caIssuers URL 获取缺失的中间证书,或复用缓存的中间证书,而 OpenSSL、Go、Java 和大多数 API 客户端不会这样做。
客户端会构建路径,而不只是读取列表:存在交叉签名的中间证书时,可能有多条有效路径,验证方会选择一条终止于它所信任的根证书的路径。Let's Encrypt 正是这样借助 DST Root CA X3 的交叉签名,让旧的 Android 设备一直正常工作到2024年;这也是为什么文件中的顺序不如所需证书是否齐全重要。
PEM 证书包(fullchain.pem)包含叶子证书和中间证书;PKCS #12 文件也可以携带它们。证书链构建工具可以重新排序并补全证书链,PEM 证书包拆分工具可以把证书包拆分成单独的证书。