我们都知道,SSL证书如果需要具有验证身份功能的话,无非是需要保证两点:颁发机构权威和防篡改。SSL证书是通过数字签名的方式,防止中间人(MITM)篡改公钥的。SSL证书验证流程是什么样的呢?
首先服务机构向CA申请SSL证书,提供企业信息,法人联系方式,域名等等企业信息。CA机构验证后,会先自己生成一个证书,可以理解为可读的明文。(实际上是一个特定格式的数据文件,但此处为了理解做出抽象)
验证通过,生成证书后, CA机构会对明文证书进行Hash,得到摘要信息,并将摘要信息使用CA私钥进行加密得到数字签名。之后将证书明文内容+数字签名 返回到服务机构。
当客户端和服务器握手时,服务器将CA机构生成的证书明文内容+数字签名发送给客户端。客户端通过操作系统或者浏览器内置信任的CA机构找到对应CA机构的公钥对数字签名进行解密,然后采用同样的摘要算法计算SSL证书的摘要,如果自己计算的摘要与服务器发来的摘要一致,则证书是没有被篡改过的!
注意: 一个是CA的公钥,内置在客户端,用来解密数字签名!另一个是目标服务器的公钥,在SSL证书内容里,用来协商对称密钥!
SSL证书验证过程大致就是如此。这里提醒大家在申请SSL证书时一定要选择正规可信的CA机构,这样才有安全保障。