关于SSL证书-根证书、中间证书、域名证书、key

98 阅读3分钟

根证书、中间证书、域名证书、key之间

组件说明是否公开存放位置
根证书(Root CA)信任锚点,自签名,由操作系统/浏览器预置✅ 公开客户端(用户设备)
中间证书(Intermediate CA)由根证书签发,用于签发最终用户证书✅ 公开服务器(需随域名证书一起发送)
域名证书(服务器证书)绑定具体域名(如 www.example.com),由中间 CA 签发✅ 公开服务器
私钥(Private Key)与域名证书配对,用于解密和签名❌ 绝对保密服务器(严格保护)

🔐 关键原则

  • 证书 = 公钥 + 身份信息 + 上级 CA 签名
  • 私钥 = 与证书中的公钥配对,用于 TLS 握手时的解密/签名

域名证书到根证书

当客户端(如浏览器)访问一个 HTTPS 网站时,会验证如下信任链:

text
编辑
[浏览器信任的根证书]
        ↑(信任)
[SHECA Root CA] ←(签发)←
        ↑
[SHECA OV Server CA G5] ←(签发)←
        ↑
[www.example.com] ←(你的域名证书)

验证过程:

  1. 浏览器收到服务器发来的 域名证书 + 中间证书
  2. 用中间证书的公钥验证域名证书的签名。
  3. 用本地已信任的 根证书 验证中间证书的签名。
  4. 若整条链验证通过,且域名匹配、未过期、未吊销 → 连接安全,显示锁图标

⚠️ 如果服务器未发送中间证书,浏览器无法连接到根证书 → 报错 “此网站的证书链不完整” 或 “NET::ERR_CERT_AUTHORITY_INVALID”。

图解关系

text
编辑
[客户端(浏览器)]
       │
       │ 信任内置
       ▼
   SHECA Root CA(根证书) ←(签发)←
                               │
                               ▼
                   SHECA OV Server CA G5(中间证书) ←(签发)←
                                                           │
                                                           ▼
                                             www.example.com(域名证书)
                                                           │
                                                           │ 配对使用
                                                           ▼
                                                 example.com.key(私钥)

其他

1. 信任来源

  • 根证书:被操作系统(Windows/macOS/Linux)和浏览器(Chrome/Firefox/Safari)预置在“受信任的根证书存储”中。一旦被信任,其签发的所有下级证书自动获得信任。
  • 中间证书不预装在系统中,必须由网站服务器在 TLS 握手时主动发送,否则客户端无法构建完整信任链,导致“证书不被信任”错误。

2. 安全性设计

  • 根证书

    • 私钥严格离线保管(通常存放在硬件安全模块 HSM 中,物理隔离)。
    • 几乎从不直接签发用户证书,以降低泄露风险。
  • 中间证书

    • 私钥在线使用,用于日常签发服务器证书。
    • 若被泄露,可单独吊销,不影响根证书和其他中间证书。

3. 有效期

  • 根证书:有效期很长,通常 15–25 年(例如 SHECA 根证书可能到 2030 年后)。
  • 中间证书:有效期较短,通常 3–5 年(如 SHECA OV Server CA G5 有效期约为 2020–2028 年左右,具体以实际为准)。

4. 部署位置

  • 根证书:存在于客户端(用户电脑/手机的系统或浏览器中)。
  • 中间证书:必须部署在服务器端,与网站 SSL 证书一起配置(如 Apache 的 SSLCertificateChainFile 或 Nginx 的 ssl_trusted_certificate)。

5. 如何识别

  • 查看证书的  “颁发者”(Issuer)  和  “使用者”(Subject)  字段:

    • 如果两者相同 → 是根证书(自签名)。
    • 如果两者不同 → 是中间证书或服务器证书。
  • 在浏览器中查看证书路径(Certification Path),最顶层是根证书,中间层是中间证书。