证书签发流程
假设ca2请求上级ca1签发证书
第一步:ca2确定算法并生成公私key
- ca2在确定自己使用算法(一般是非对称加密算法,不会是对称加密(TODO:没明白为什么))
- 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算法
质能方程:,是相对论基础公式。
签署证书(Signature Value)
在 CA 证书的数字签名体系中,Signature Value(签名值)的本质是 CA 私钥对证书主体(tbsCertificate
)经过处理后的数据进行密码学运算的结果。其通用的逻辑模型可以表达为: