Loading... ```mermaid flowchart TD subgraph 新CA A[新CA根证书 Root B 自签名] B[新CA中间证书 Intermediate B] end subgraph 老CA C[老CA根证书 Root A 已被广泛信任] end C --> D[Root A 签名 Root B] A --> D D --> E[交叉证书 Root B signed by Root A] F[用户证书] --> G{客户端验证} G --> H[路径1: 直接信任 Root B] G --> I[路径2: 通过交叉证书信任 Root A] H --> J[新设备 ✅] I --> K[老设备 ✅] B --> F E --> I ```  ```mermaid flowchart TD C[老CA Root A] --> D[交叉签名] A[新CA Root B] --> D D --> E[交叉证书] F[用户证书] --> G{验证} G -->|路径1| H[Root B → 新设备] G -->|路径2| I[交叉证书 → Root A → 老设备] ```  --- ## 交叉签名工作原理 ### 核心概念 | 术语 | 含义 | |------|------| | **根证书** | CA的最高信任锚点,自签名 | | **交叉证书** | 用已信任CA的私钥签署另一个CA的公钥 | | **证书链** | 从用户证书到根证书的信任路径 | ### 签名过程 ``` 新CA (ISRG/Let's Encrypt) 请求老CA (IdenTrust) 帮忙签名 老CA私钥 + 新CA公钥信息 → 交叉证书 ``` ```text 交叉证书内容: - Subject: ISRG Root X1 (新CA名称) - Issuer: DST Root CA X3 (老CA名称) - Public Key: 新CA的公钥 - Signature: 老CA的私钥签名 ``` ### 验证时双路径 ```mermaid flowchart LR A[用户证书] --> B[中间证书] B --> C{选择路径} C --> D[新根证书<br>ISRG Root X1] C --> E[交叉证书] --> F[老根证书<br>DST Root CA X3] D --> G[2016年后设备] F --> H[老旧设备] ``` ### 实际例子:Let's Encrypt ```text 2015年:Let's Encrypt 成立,根证书 ISRG Root X1 无人信任 解决:IdenTrust 用 DST Root CA X3 签署 ISRG Root X1 结果: - 新设备:直接信任 ISRG Root X1 - 老设备:通过交叉证书信任 DST Root CA X3 → 间接信任 ISRG ``` ### 为什么用户无法自己做 ```mermaid flowchart TD A[交叉签名需要] --> B[老CA的私钥] B --> C[私钥由CA严格保管] C --> D[用户无法获取] D --> E[必须CA之间协商完成] ``` **关键点:** 签名需要老CA的**私钥**,这是CA最核心的秘密,绝不对外公开。 最后修改:2026 年 02 月 05 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏