Loading... ```mermaid flowchart TD subgraph S1[场景1:新CA获取信任] A1["新CA根证书(无人信任)"] --> B1[老CA签名] B1 --> C1[交叉证书] C1 --> D1["老设备兼容 ✓"] end subgraph S2[场景2:老CA续命] A2["老CA根证书(即将过期)"] --> B2[新CA签名] B2 --> C2[交叉证书] C2 --> D2["延长信任期 ✓"] end subgraph S3[场景3:双向互信] A3[CA-A] --> C3[互相签名] B3[CA-B] --> C3 C3 --> D3["冗余信任路径 ✓"] end ```  --- ## 交叉签名的多种场景 ### 场景对比 | 场景 | 方向 | 目的 | 实例 | |------|------|------|------| | 新CA获信任 | 老CA → 新CA | 借用已有信任 | IdenTrust → Let's Encrypt | | 老CA续命 | 新CA → 老CA | 延长过期根证书 | Let's Encrypt → IdenTrust | | 双向互信 | 双向 | 冗余容灾 | 大型CA联盟 | --- ### 场景2详解:老CA续命 ```mermaid flowchart LR subgraph 2021年问题 A[DST Root CA X3<br>IdenTrust老根<br>2021年9月过期] end subgraph 解决方案 B[ISRG Root X1<br>Let's Encrypt新根<br>签署老根] end A --> B B --> C[新交叉证书<br>DST Root CA X3<br>signed by ISRG Root X1] C --> D[老安卓设备<br>只信任DST根<br>继续工作✅] ```  **实际案例:Let's Encrypt 2021年** ```text 问题: - DST Root CA X3 于 2021年9月30日过期 - 老安卓设备(<7.1.1)只信任这个老根 - 这些设备不会更新根证书库 解决: - Let's Encrypt 用 ISRG Root X1 反向签署 DST Root CA X3 - 老设备验证链:用户证书 → 中间证书 → DST(被ISRG签名) → ISRG - 虽然DST自签名过期,但交叉签名版本未过期 ``` --- ### 证书链验证逻辑 ```mermaid flowchart TD A[用户证书] --> B[中间证书 R3] B --> C{验证路径选择} C --> D[路径1<br>ISRG Root X1 自签名] C --> E[路径2<br>DST Root CA X3 自签名<br>已过期❌] C --> F[路径3<br>DST Root CA X3<br>被ISRG签名版本✅] D --> G[新设备直接信任] F --> H[老设备通过交叉证书信任] ```  --- ### 为什么能续命 ```text 关键点:证书有效期由签发者决定 DST Root CA X3 自签名版本: - Issuer: DST Root CA X3 - Not After: 2021-09-30 ❌过期 DST Root CA X3 被ISRG签名版本: - Issuer: ISRG Root X1 - Not After: 2024-09-30 ✅有效 - Subject和公钥与自签名版本相同 ``` 同一个CA可以有**多个版本的证书**(不同签发者、不同有效期),只要公钥相同,都代表同一身份。 最后修改:2026 年 02 月 05 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏