# X.509 Certificate X.509 是一种通用的数字证书标准,广泛用于 TLS/SSL 协议、数字签名、加密通信等场景。它定义了数字证书的格式和验证方法。 --- ## **X.509 证书的结构** 一个 X.509 证书的核心内容包含以下部分: ### **1. 版本 (Version)** - 指明证书使用的 X.509 标准版本(通常为 v3)。 - 当前广泛使用的是 v3,支持扩展字段。 ### **2. 序列号 (Serial Number)** - 证书颁发机构 (CA) 分配的唯一标识,用于区分不同的证书。 ### **3. 签名算法 (Signature Algorithm)** - 表明证书签名使用的算法,如 `SHA256-RSA`。 - 此字段同时指示如何验证证书的合法性。 ### **4. 颁发者 (Issuer)** - 表示签发此证书的证书颁发机构 (CA) 的信息(如国家、机构名等)。 - 这是一个 X.500 格式的名称,如: ``` C=CN, O=Example CA, CN=Example Root CA ``` ### **5. 有效期 (Validity)** - 包括两个字段: - `Not Before`: 证书开始生效的时间。 - `Not After`: 证书到期的时间。 ### **6. 使用者 (Subject)** - 表示此证书的持有者(如域名、组织名称等)。 - 格式与 `Issuer` 类似,例如: ``` C=CN, O=Example Organization, CN=www.example.com ``` ### **7. 使用者公钥 (Subject Public Key Info)** - 包含公钥的类型(如 RSA、ECDSA)和公钥数据。 - 用于加密和签名验证。 ### **8. 扩展字段 (Extensions)** - 提供额外的功能和信息(v3 特有)。 - **Key Usage**: 指明证书用途(如数字签名、密钥加密)。 - **Extended Key Usage (EKU)**: 指明更具体的用途(如 HTTPS 服务器、代码签名)。 - **Subject Alternative Name (SAN)**: 支持多个域名或 IP 地址。 - **CRL Distribution Points**: 指定证书吊销列表 (CRL) 的 URL。 ### **9. 签名 (Signature)** - 由 CA 使用其私钥对上述内容签名,确保数据完整性和来源可信性。 --- ## **X.509 证书的签发过程** 1. **申请者生成密钥对 (Key Pair Generation)** - 用户生成一对密钥(公钥和私钥)。 - 公钥会包含在证书中,私钥由用户自行保管。 2. **提交 CSR (Certificate Signing Request)** - 用户创建一个证书签名请求 (CSR),包含以下信息: - 公钥 - 使用者信息(如域名、组织) - 签名(由用户私钥签名) - CSR 提交给证书颁发机构 (CA)。 3. **CA 验证申请者身份** - CA 验证用户提供的信息是否属实(如验证域名的所有权)。 4. **签发证书** - CA 生成证书,包含申请者的公钥及其他信息。 - 使用 CA 的私钥对证书内容签名。 5. **分发证书** - 签发后的证书交给用户,用于安全通信或身份验证。 --- ## **X.509 证书的验证过程** 1. **验证证书链 (Certificate Chain)** - 检查证书是否由可信的根 CA 或中间 CA 签发。 - 验证链条中的所有证书都有效且未过期。 2. **验证签名** - 使用颁发者(Issuer)字段对应 CA 的公钥,验证签名字段。 - 确保证书内容未被篡改。 3. **检查有效期** - 确保证书的当前时间在有效期范围内。 4. **检查吊销状态** - 查询 CRL 或 OCSP,看证书是否被吊销。 5. **验证扩展字段** - 检查扩展字段是否符合期望用途(如服务器证书必须包含 `Extended Key Usage` 的 TLS 标记)。 --- ## **可视化理解 X.509 证书** ### **树形结构** ``` X.509 Certificate ├── Version: v3 ├── Serial Number: 123456789 ├── Signature Algorithm: SHA256-RSA ├── Issuer: C=CN, O=Example CA, CN=Root CA ├── Validity │ ├── Not Before: 2025-01-01 │ ├── Not After: 2026-01-01 ├── Subject: C=CN, O=Example Org, CN=www.example.com ├── Public Key Info │ ├── Algorithm: RSA │ ├── Public Key: ├── Extensions │ ├── Key Usage: Digital Signature, Key Encipherment │ ├── Subject Alternative Name: www.example.com, example.com │ ├── CRL Distribution Points: http://crl.example.com └── Signature: ```