数字证书(Digital Certificate)是由可信签发方 签发 的结构化凭据,用 数字签名 把主体身份、用途、有效期和 公钥 绑定在一起。
核心问题
数字证书解决的是“这把公钥到底属于谁”的问题。单独拿到一个 公钥 只能说明有人拥有对应 私钥,但不能证明它属于某个域名、组织、用户或设备。
证书通过签发方的签名和信任链,把公钥从一段裸密钥材料变成可被验证的身份材料。
核心机制
以常见的 X.509 证书为例,证书通常包含:
- Subject:证书主体,例如域名、组织、设备或用户。
- Subject Public Key:主体公钥。
- Issuer:签发方。
- Validity:生效时间和过期时间。
- Key Usage / Extended Key Usage:允许用途,例如服务器认证、客户端认证或代码签名。
- Serial Number / Extensions:序列号、SAN、策略、约束和扩展字段。
- Signature:签发方对证书内容生成的签名。
验证证书时,系统会检查签名链、有效期、主体匹配、用途约束、撤销状态和可信根。
工程用途
- HTTPS / TLS:证明服务器公钥属于目标域名。
- mTLS:客户端和服务器都用证书证明身份。
- 代码签名:把软件发布者身份绑定到签名公钥。
- 设备身份:设备出厂时获得设备证书,用于后续注册和认证。
- 企业内网信任:内部 CA 为服务、用户和机器签发证书。
观察指标包括证书链完整性、过期时间、SAN 覆盖、签发来源、撤销状态、弱算法残留和私钥匹配状态。
边界与常见坑
- 证书不是私钥:证书通常可以公开;真正必须保护的是证书对应的 私钥。
- 证书有效不等于业务授权:它只证明身份或用途约束,具体权限仍由业务系统判断。
- 自签名不一定错误:只要信任根被明确管理,自签名证书也可以用于内部系统;问题在于信任分发。
- 只验签证书不够:还要检查域名、有效期、用途、撤销和信任根。
- 证书过期会直接造成中断:证书生命周期和自动续期是可用性问题,不只是安全问题。
- 私钥必须匹配证书公钥:证书换新、私钥轮换或部署错误都可能导致握手或签名失败。