将实体名称(身份)与公钥绑定在一起的经过签名的数据结构。
核心定义
数字证书是一个包含以下内容的文件:
- 持有者的身份信息(域名、个人、组织等)
- 持有者的公钥
- 颁发机构()的数字签名
- 有效期
证书本身是公开的——它的设计目的就是分发给所有需要验证身份的人。真正的秘密是与证书配套的私钥,私钥永远不应离开持有者的掌控。
“证书和 PKI 的目标就是将名称与公钥绑定。其余的都是实现细节。” — Mike Malone, Smallstep
证书能证明什么,不能证明什么
| 能证明 | 不能证明 |
|---|---|
| 这个公钥属于某个身份 | 当前操作者就是证书持有人 |
| 证书由可信 CA 签发 | 私钥没有被泄露 |
| 证书在有效期内未被吊销 | 持有者的行为合法 |
真正完成“当前操作者身份确认”的是私钥——只有持有者能用私钥签名,他人用证书中的公钥验证签名,通过即确认身份。
常见证书类型
- 叶证书(Leaf Certificate / End Entity Certificate):颁发给最终实体(网站、用户、设备)
- 中间证书(Intermediate Certificate):由根 CA 颁发给下级 CA
- 根证书(Root Certificate):信任链的起点,预置在操作系统/浏览器中
从结构到约束
X.509 证书是由 表达和编码的数据结构。外层包含待签名部分 TBSCertificate、签名算法和签名值;CA 实际签名的是 TBSCertificate 的 DER 字节。
v3 扩展让证书不仅声明“身份与公钥的绑定”,还携带使用约束:Basic Constraints 决定是否可作为 CA,Key Usage/EKU 限制用途,SAN 用于现代名称匹配,Name Constraints 和策略扩展继续收窄有效范围。验证者遇到无法理解的 critical 扩展时必须拒绝,而不能静默忽略。
私钥保护方式
| 方式 | 描述 | 适用场景 |
|---|---|---|
| U 盾(硬件令牌) | 私钥存储于硬件设备,签名在设备内完成,私钥不可导出 | 高安全要求、强合规场景 |
| 云证书 | 私钥托管于云端 HSM,通过身份认证触发签名 | 便捷性优先、多终端场景 |
| 软证书 | 私钥以文件形式存储(安全性最低) | 开发/测试环境 |
相关概念
- — 数字证书所处的信任体系
- — 签发证书的权威机构
- — 代理 CA 进行身份核实
- 公钥密码学 — 证书的密码学基础
- — CA 用签名保证证书真实性
- TLS — 最常见的证书应用场景
- — 证书吊销与状态查询机制
- 硬件安全模块(HSM) — 保护私钥的硬件
- PKCS与证书容器 — 证书、私钥和证书链的表达与组合方式
来源
- 数字证书与PKI — Smallstep 英文技术文章(权威,从密码学基础讲起)
- 认识数字证书 — 作者自己的中文博客(含 U 盾/云证书/RA 内容)
- 理解PKI(二):从ASN.1到DER — 从结构、DER 字节到 PEM 文本封装
- 理解PKI(三):拆开X.509v3 — X.509 主体字段与 v3 扩展约束
- 理解PKI(四):证书私钥与容器 — 证书与私钥对象、容器和存储边界
这是一页生长中的知识
内容会随着新来源、实践与校订继续更新,而不是一次发布后就停止变化。