# 交叉签名（Cross-Signing）是什么？

> 交叉签名是指由一个已被广泛信任的 CA 为另一个 CA 的现有密钥签发证书，使后者签发的证书也能链到老设备信任的根。

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

交叉签名是为同一个 CA 名称和公钥再签发一张证书，签名者换成另一个早已被客户端信任的 CA。这样，这个 CA 签发的证书就有两条可选路径：一条到它自己的 [根证书](https://ssl.sh/zh/glossary/root-certificate/)，另一条经过交叉证书到更老的根。客户端会沿着能落到自己信任库里的那条 [证书链](https://ssl.sh/zh/glossary/certificate-chain/) 完成验证。

## 为什么重要
新根证书要进入所有设备的信任库往往需要数年，很多老设备甚至永远不会更新，交叉签名让新 CA 一开始就能兼容这些设备。最著名的例子是 [Let's Encrypt](https://ssl.sh/zh/glossary/let-s-encrypt/)：它的 ISRG Root X1 曾由 IdenTrust 的 DST Root CA X3 交叉签名。DST Root CA X3 于 2021-09-30 过期，Let's Encrypt 默认链在 2024-02-08 停止使用交叉签名，交叉证书本身也在 2024-09-30 过期。每一步都让一批过时的客户端出错，说明交叉签名只是过渡手段，而不是长久之计。

## 例子
2024 年以前，一张 Let's Encrypt 证书可能走的两条路径：

```text
路径 A：example.com -> 中间证书 -> ISRG Root X1（自签名，新设备信任）
路径 B：example.com -> 中间证书 -> ISRG Root X1（交叉签名）-> DST Root CA X3
```

两条路径的前两环完全相同，只有末端不同。

## 常见误区
- **交叉证书用的是另一把密钥。** 它与原 CA 证书的主体名称和公钥完全相同，所以两条路径都能验证通过。
- **交叉签名说明有两家 CA 验证了我的域名。** 只有签发 CA 做了域名验证，交叉签名方担保的是 CA 本身，而不是你的网站。
- **老根过期只影响老设备。** DST Root CA X3 过期时，一些基于 OpenSSL 1.0.2 的客户端即使系统已更新也会失败，因为它们停在了过期路径上，没有尝试另一条有效路径。

## 相关术语

- [根证书](https://ssl.sh/zh/glossary/root-certificate/): 根证书是位于证书链顶端、由 CA 自签名的证书，预装在操作系统或浏览器的信任库中，作为验证其他证书的信任锚。
- [证书链](https://ssl.sh/zh/glossary/certificate-chain/): 证书链是从网站终端证书经中间证书一直到受信任根证书的有序证书序列，每一张都由下一张签名。
- [中间证书](https://ssl.sh/zh/glossary/intermediate-certificate/): 中间证书是由根证书（或上级中间证书）签发、用来签发网站证书的 CA 证书，服务器必须把它和网站证书一起发送给客户端。
- [信任库](https://ssl.sh/zh/glossary/trust-store/): 信任库是操作系统、浏览器或编程语言运行时内置的一组根 CA 证书，验证证书链时以它们作为信任锚。
- [Let's Encrypt](https://ssl.sh/zh/glossary/let-s-encrypt/): Let's Encrypt 是由非营利组织 ISRG 运营的免费、自动化证书颁发机构，通过 ACME 协议签发域名验证型 TLS 证书。
- [根证书计划](https://ssl.sh/zh/glossary/root-program/): 根证书计划是浏览器或操作系统厂商用来决定其信任库收录、限制或移除哪些根 CA 的政策与流程。
