第 1 章:CA 证书概述
第 1 章:CA 证书概述
理解 CA 证书是掌握整个 PKI(Public Key Infrastructure,公钥基础设施)体系的起点。本章将从最基础的概念出发,逐步建立对 CA 生态系统的完整认知。
1.1 什么是数字证书
数字证书(Digital Certificate)是网络世界中的"身份证"。它由受信任的第三方机构签发,用于证明一个公钥(Public Key)确实属于某个实体(个人、组织或服务器)。
证书的本质
一个 X.509 格式的数字证书包含以下核心信息:
| 字段 | 英文名 | 说明 |
|---|---|---|
| 主体 | Subject | 证书持有者的身份信息(域名、组织名等) |
| 颁发者 | Issuer | 签发该证书的 CA 信息 |
| 有效期 | Validity | 证书的生效时间和过期时间 |
| 公钥 | Public Key | 证书持有者的公钥(用于加密或验证签名) |
| 序列号 | Serial Number | 证书的唯一编号 |
| 签名算法 | Signature Algorithm | CA 用于签名的算法(如 SHA-256 with RSA) |
| 扩展信息 | Extensions | 密钥用途、主体备用名称等附加信息 |
查看一张真实证书
# 查看百度的证书信息
echo | openssl s_client -connect www.baidu.com:443 -servername www.baidu.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -serial
输出示例:
subject= /CN=www.baidu.com
issuer= /C=US/O=DigiCert Inc/CN=DigiCert Secure Site Pro CN CA G3
notBefore=Jan 15 00:00:00 2025 GMT
notAfter=Feb 13 23:59:59 2026 GMT
serial=0A1B2C3D4E5F6789...
💡 提示:
-servername参数用于指定 SNI(Server Name Indication),在一台服务器托管多个域名证书时必须使用。
1.2 什么是 CA(Certificate Authority)
CA,即证书颁发机构(Certificate Authority),是 PKI 体系中的核心角色。CA 的职责包括:
- 验证身份:核实申请者对域名或组织的所有权
- 签发证书:使用 CA 的私钥对证书进行数字签名
- 吊销证书:在证书被泄露或不再需要时发布吊销信息
- 维护信任:遵守行业标准和审计要求,维持浏览器/操作系统的信任
CA 的分级体系
┌─────────────┐
│ 根 CA (Root) │ ← 自签名,预装在操作系统/浏览器中
│ 信任的起点 │
└──────┬──────┘
│ 签发
┌──────▼──────┐
│ 中间 CA │ ← 由根 CA 签发,可多层级
│ (Intermediate)│
└──────┬──────┘
│ 签发
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 终端证书 │ │ 终端证书 │ │ 终端证书 │
│ (Leaf) │ │ (Leaf) │ │ (Leaf) │
│ example │ │ foo.com │ │ bar.com │
└──────────┘ └──────────┘ └──────────┘
1.3 根证书(Root Certificate)
根证书是信任链的锚点(Trust Anchor)。它是 CA 自己签发给自己的证书(自签名证书),预装在操作系统和浏览器的信任存储中。
主要根 CA 一览
| CA 名称 | 所属机构 | 备注 |
|---|---|---|
| DigiCert Global Root CA | DigiCert Inc | 2017 年收购 Symantec 证书业务 |
| ISRG Root X1 | Let’s Encrypt | 非营利组织,推动 HTTPS 普及 |
| GlobalSign Root CA | GMO GlobalSign | 日本 GMO 集团旗下 |
| Baltimore CyberTrust Root | DigiCert(原 Verizon) | 微软信任的根 CA |
| AAA Certificate Services | Sectigo(原 Comodo) | 市场份额较大的商业 CA |
| CFCA EV ROOT | 中国金融认证中心 | 中国金融行业根 CA |
查看系统根证书
# Debian/Ubuntu:查看 ca-certificates 包含的根证书
ls /etc/ssl/certs/
# 查看某个根证书的详细信息
openssl x509 -in /etc/ssl/certs/DigiCert_Global_Root_CA.pem -noout -text
# 仅查看关键字段
openssl x509 -in /etc/ssl/certs/DigiCert_Global_Root_CA.pem \
-noout -subject -issuer -dates
# RHEL/CentOS/Fedora
ls /etc/pki/ca-trust/extracted/pem/
# 或使用 update-ca-trust 工具
trust list | head -30
⚠️ 注意:根证书的私钥通常存储在 HSM(Hardware Security Module,硬件安全模块)中,物理隔离,几乎从不直接用于签发终端证书。
1.4 中间证书(Intermediate Certificate)
中间证书位于根证书和终端证书之间,起到缓冲保护作用。
为什么需要中间证书
| 场景 | 只有根 CA 的做法 | 有中间 CA 的做法 |
|---|---|---|
| 日常签发 | 根私钥频繁使用,风险极高 | 中间 CA 私钥负责签发,根私钥离线保护 |
| 私钥泄露 | 根 CA 从信任存储中移除,所有证书失效 | 仅吊销中间 CA,影响范围可控 |
| 审计成本 | 每次签发都要严格审计 | 中间 CA 可批量审计 |
中间证书的层级
Root CA
└── Intermediate CA L1
└── Intermediate CA L2
└── Leaf Certificate
💡 提示:在实际部署中,通常有 1-2 层中间证书。层数越多,TLS 握手时传输的数据量越大。
检查中间证书
# 查看网站证书链
echo | openssl s_client -connect www.google.com:443 -servername www.google.com \
-showcerts 2>/dev/null | grep -E "s:|i:"
# 输出示例:
# 0 s:CN=www.google.com
# i:C=US, O=Google Trust Services, CN=WR2
# 1 s:C=US, O=Google Trust Services, CN=WR2
# i:C=US, O=Google Trust Services LLC, CN=GTS Root R1
1.5 信任链(Chain of Trust)
信任链是 PKI 体系的核心机制。验证一张证书是否可信,需要沿着证书链逐级向上验证,直到找到一个被本地信任存储所信任的根证书。
验证过程
客户端持有:Root CA(信任锚点)
服务器发送:Leaf + Intermediate
验证步骤:
1. 用 Intermediate 的公钥验证 Leaf 的签名 ✓
2. 用 Root CA 的公钥验证 Intermediate 的签名 ✓
3. Root CA 在本地信任存储中 ✓
──▶ 信任链验证通过
用 OpenSSL 手动验证信任链
# 1. 下载服务器证书和中间证书
echo | openssl s_client -connect www.baidu.com:443 -servername www.baidu.com \
-showcerts 2>/dev/null > baidu_chain.pem
# 2. 提取服务器证书(第一个证书)
sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' baidu_chain.pem | \
sed -n '1,/END CERTIFICATE/p' > baidu_leaf.pem
# 3. 提取中间证书
sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' baidu_chain.pem | \
sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/{/END CERTIFICATE/p}' | \
head -1 > /dev/null # 定位
awk '/BEGIN CERTIFICATE/{n++} n==2' baidu_chain.pem > baidu_intermediate.pem
# 4. 使用系统信任存储验证
openssl verify -CApath /etc/ssl/certs baidu_leaf.pem
# 5. 手动指定中间证书验证
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt \
-untrusted baidu_intermediate.pem baidu_leaf.pem
📋 业务场景:企业内网服务如果缺少中间证书,浏览器虽然能通过根证书验证信任链,但会多一步中间证书下载(AIA fetch),增加 TLS 握手延迟。务必在服务端配置完整的证书链。
1.6 CA 生态系统
CA/Browser Forum
CA/Browser Forum(CA/B 论坛)是制定 CA 行业标准的核心组织,成员包括:
- 浏览器厂商:Google、Mozilla、Apple、Microsoft
- CA 机构:DigiCert、Let’s Encrypt、Sectigo 等
- 其他利益相关方
CA/B 论坛制定的主要规范:
| 规范 | 说明 |
|---|---|
| Baseline Requirements | CA 基线要求(域名验证、密钥长度、有效期等) |
| EV Guidelines | 扩展验证证书的指导方针 |
| Code Signing Baseline Requirements | 代码签名证书的基线要求 |
信任机制
┌───────────────┐
│ 浏览器/操作系统 │
│ 信任策略管理 │
└───────┬───────┘
│ 预置信任
┌─────▼─────┐
│ 根证书存储 │
│ Root Store │
└─────┬─────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ DigiCert │ │ Let's │ │ 其他受信 │
│ │ │ Encrypt │ │ 任 CA │
└──────────┘ └──────────┘ └──────────┘
各平台信任存储
| 平台 | 信任存储 | 管理方式 |
|---|---|---|
| Windows | Windows Certificate Store | certmgr.msc / PowerShell |
| macOS | Keychain Access | security 命令 / 系统偏好设置 |
| Android | System CA Store(只读)+ User CA Store | 设置 → 安全 → 信任的凭据 |
| iOS | Trust Store | 设置 → 通用 → 关于 → 证书信任设置 |
| Firefox | NSS(独立信任存储) | about:preferences#privacy |
| Linux | ca-certificates / p11-kit | update-ca-certificates / update-ca-trust |
🔒 安全:Firefox 自带独立的 NSS 信任存储,与系统存储不共享。这意味着在系统中添加的自定义 CA 证书不会自动被 Firefox 信任。从 Firefox 49 开始,可设置
security.enterprise_roots.enabled = true让 Firefox 使用系统根证书。
1.7 CA 证书的生命周期
一张证书从申请到废弃,经历以下阶段:
申请 ──▶ 验证 ──▶ 签发 ──▶ 部署 ──▶ 监控 ──▶ 续期/吊销
各阶段详情
| 阶段 | 说明 | 工具/服务 |
|---|---|---|
| 申请 | 生成 CSR(证书签名请求) | OpenSSL, certbot |
| 验证 | CA 验证域名/组织所有权 | DNS TXT, HTTP 文件, 邮件验证 |
| 签发 | CA 用私钥对证书签名 | CA 后端系统 |
| 部署 | 将证书安装到 Web 服务器 | Nginx, Apache, 负载均衡器 |
| 监控 | 跟踪证书过期时间 | Prometheus, cert-monitor |
| 续期 | 证书到期前重新签发 | certbot renew, ACME |
| 吊销 | 私钥泄露或不再需要时撤销 | CRL, OCSP |
1.8 本章小结
| 概念 | 关键要点 |
|---|---|
| 数字证书 | 包含公钥和身份信息,由 CA 签名 |
| CA | 负责验证身份、签发证书、维护信任 |
| 根证书 | 信任链的起点,自签名,预装在系统中 |
| 中间证书 | 保护根私钥,承担日常签发任务 |
| 信任链 | 从终端证书逐级验证到根证书 |
| CA 生态 | CA/B 论坛制定标准,浏览器/OS 管理信任存储 |
📚 扩展阅读
- RFC 5280 - Internet X.509 PKI Certificate and CRL Profile
- CA/Browser Forum Baseline Requirements
- Mozilla’s CA Certificate Program
- Cloudflare - What is a Certificate Authority?
- SSL/TLS 证书信任链工作原理(中文)
下一章:第 2 章:工作原理 — 深入了解 TLS 握手、证书验证过程和 OCSP 机制。