该过程应涉及三个实体:
- 发件人——你
- 接收者——用户
- 证书颁发机构 - 受信任的第三方(或者在某些情况下是您)
保证事情安全的过程是“发件人”,生成一对密钥(公钥和私钥)。我喜欢将它们称为钥匙和锁以获得更好的视觉效果。密钥(私人)不应该离开发件人的财产,这就是为什么它被称为私人密钥。
然后,发送者使用公钥(锁)生成证书签名请求(CSR),并将其转发给证书颁发机构(受信任的第三方),证书颁发机构使用证书颁发机构私钥对公钥(锁)进行签名。
证书颁发机构现在将由证书颁发机构私钥签名的“发件人”公钥发送回“发件人”,这就是现在的证书。
接收者获取证书(让我们说通过网络浏览器)并使用“发送者”和“接收者”都拥有的证书颁发机构公钥验证它是否有效,因为它们是受信任的第三方。一旦验证证书中的公钥可以被信任* 为“发件人的”公钥不变。
如果“接收方”需要向“发送方”发送数据,他们将使用可信证书中的公钥将数据加密为密文,然后将其传递给“发送方”。由于只有“发件人”的私钥才能解密用“发件人”公钥加密的密文,中间的任何人基本上都有无用的乱码。
在某些情况下,“发件人”可以通过使用不同的密钥集签署自己的 CSR 或使用相同的密钥集进行自签名来生成他/她自己的证书颁发机构。在这种情况下,双方需要通过安全通道知道“发件人”的公钥才能获得信任。在软件中,您可以将证书包含在可用作受信任第三方的可交付成果中。
*trusted 仅在证书颁发机构维护 CRL(证书撤销列表)并且各方监控该列表以确保颁发的证书没有被泄露时才有效。存在证书颁发机构受到损害并且私钥泄露的情况,当这种情况发生时,受损害代理可以使用私钥生成模仿“发件人”的受信任证书,在这种情况下,MITM 是可能的,并且 MITM 可以从“发送者”接收数据解密、存储、使用看起来像“发送者”的有效证书加密,然后将其传递给“接收者”。