CACertificate Authority,证书颁发机构)是在 PKI(公钥基础设施) 中负责验证主体身份、把主体和 公钥 绑定起来,并用自己的 私钥 签发 数字证书 的信任机构。

核心问题

公钥 只能证明“有人拥有对应私钥”,不能证明这把公钥属于 example.com、某家公司、某台设备或某个用户。CA 解决的是“谁有资格替主体和公钥之间的绑定背书”的问题。

在 HTTPS 中,浏览器不可能提前认识每个网站的公钥。浏览器真正预置的是一批可信根证书;服务器证书只要能通过 证书链 追溯到这些可信根,浏览器就可以接受“这张证书里的公钥属于这个域名”。

核心对象

对象作用是否可公开
主体证书要证明的对象,例如域名、组织、用户、设备可公开
主体公钥被写入证书、以后用于握手或 验签 的公钥可公开
主体私钥与主体公钥配对,用来证明主体持有该密钥必须保密
CA 证书说明 CA 身份和 CA 公钥的证书可公开
CA 私钥CA 用来签发证书的签名密钥必须严密保护
证书策略规定 CA 如何验明主体、签发、吊销和审计可公开或内部受控

核心机制

一次典型签发流程是:

  1. 主体生成密钥对:subject_sk, subject_pk
  2. 主体用私钥构造 CSR(证书签名请求),提交主体信息和 subject_pk
  3. CA 验证主体控制权或身份,例如 DNS、HTTP、邮件、企业审批或设备产线记录。
  4. CA 生成证书内容:subject、SAN、issuer、validity、key usage、serial number、subject public key 等。
  5. CA 用自己的私钥对证书的规范化内容做 数字签名
  6. 依赖方收到证书后,用 CA 公钥验证签名,再检查域名、有效期、用途、吊销状态和信任链。

抽象公式可以写成:

certificate = payload || Sign(ca_private_key, canonical(payload))
payload = subject_identity || subject_public_key || validity || usage || issuer

payload 是证书里的身份和约束;canonical(payload) 是规范化后的签名输入;Sign(...) 说明只有持有 CA 私钥的一方能制造可被 CA 公钥验证的签名。验证者信任的是“CA 公钥属于可信 CA”这个前提,而不是任意人声称的 CA。

工程用途

  • 公网 TLS:公开可信 CA 为域名签发服务器证书。
  • 企业内网 PKI:内部 CA 为服务、员工、设备或代码签名系统签发证书。
  • mTLS:服务端和客户端都用证书证明身份。
  • 设备身份:产线或设备管理平台为每台设备签发设备证书。
  • 代码签名:CA 或企业签名体系把发布者身份绑定到签名证书。

观察指标包括 CA 私钥保护方式、签发审批记录、证书过期分布、吊销响应可用性、异常签发、证书透明度日志、弱算法残留和中间 CA 约束。

边界与常见坑

  • CA 不是普通登录 IdP:CA 签发长期或中期证书;OIDC IdP 签发登录相关 token。二者都可以是身份权威,但凭据格式、生命周期和撤销机制不同。
  • CA 签名不等于业务授权:证书证明身份和用途约束,不自动说明这个主体能访问某个业务资源。
  • 根 CA 私钥泄露是灾难级事件:攻击者可以签发看似可信的证书;因此根 CA 常离线保存,只用中间 CA 日常签发。
  • 自签名不等于不安全:问题不在自签名本身,而在信任根是否被明确、安全地分发和管理。
  • 必须检查完整证书约束:只做签名验证,不检查 SAN、有效期、key usage、path length、吊销状态,会留下绕过空间。
  • 吊销不是实时魔法OCSPCRL(证书吊销列表)、缓存和网络失败都会影响吊销可见性。

相关术语