证书签发流程

2 阅读2分钟

证书签发流程

假设ca2请求上级ca1签发证书

第一步:ca2确定算法并生成公私key

  1. ca2在确定自己使用算法(一般是非对称加密算法,不会是对称加密(TODO:没明白为什么))
  2. ca2生成算法使用的ca2_publicKey和ca2_secretKey

第二步:提交申请(CSR)

ca2 不能直接把公钥裸送给 ca1。它必须提交一个叫 CSR(Certificate Signing Request,证书签名请求) 的文件。

  • CSR 里面包含:ca2 的公钥、ca2 的主体身份信息(如 CN=ca2.example.com, O=Example Corp)。
  • 关键防伪:ca2 会用自己的 ca2_PrivateKey 对这个 CSR 进行一次自签名。

ca1 收到后,会先用 CSR 里的公钥去验这个签名。这证明了:你手里确实拥有和这个公钥成对的私钥(防止黑客拿别人的公钥来冒名申请证书,也就是 Proof of Possession)

第三步:审核

ca1 收到 CSR 后,进行现实世界的合规性审查(审查你是不是真的是这个公司、有没有管理权)。

第四步:组装证书并签署

组装TBSCertificate

ca1会用ca2提交的身份信息,然后再结合其他数据组装证书主体TBSCertificate。我们重点关注其中如下字段:

Signature:

ca1在开始组装证书时会选定签署证书时会用到的的加密算法和hash算法。这个[加密算法+hash算法] 会被写入TBSCertificate.Signature和Signature Algorithm中

Subject Public Key:

包含ca2选定的ca2_publicKey和对应的加密算法。

组装Signature Algorithm

写入ca1选定的签名算法+hash算法

质能方程:E=mc2E = mc^2,是相对论基础公式。

签署证书(Signature Value)

在 CA 证书的数字签名体系中,Signature Value(签名值)的本质是 CA 私钥对证书主体(tbsCertificate )经过处理后的数据进行密码学运算的结果。其通用的逻辑模型可以表达为:

input=签名算法指定输入input = 签名算法指定输入
Signature Value=签名算法CA_Private_Key(input)\text{Signature Value} = \text{签名算法}_{\text{CA\_Private\_Key}}\big(\text{input}\big)