为什么需要 CA 证书

答案:防止中间人

中间人只需要把原本双方通信互发的公钥,换成自己的公钥,这样中间人就可以轻松解密通信双方所发送的所有数据

为解决上述中间人问题,于是后来就出现了证书,简单来讲就是找了一个大家公认的中介,来证明我就是我,你就是你的问题,防止中间被篡改:

证书中就包括个人的基本信息和最重要的公钥

证书本身的安全怎么保证

但证书在传输的过程中如果被篡改了呢,所以后来就又出现了数字签名:

简单来讲,就是将公钥和个人信息用一个Hash算法生成一个消息摘要
这个Hash算法有个极好的特性,只要输入数据有一点点变化,那生成的消息摘要就会有巨变,能有效防止别人篡改数据
但这还是有个问题,如果中间人直接把整个原始信息依然可以伪造消息摘要
所以就出现了CA,这时CA再用它的私钥对消息摘要加密,形成签名,并把原始信息和数据签名进行合并,即所谓的数字证书
这样,当别人把他的证书发过来的时候,我再用同样的Hash算法,再次生成消息摘要
然后用CA的公钥对数字签名解密,得到CA创建的消息摘要,两者一比,就知道中间有没有被人篡改了

验证证书的有效性:

浏览器默认都会内置CA根证书,其中根证书包含了CA的公钥

  1. 证书颁发的机构是伪造的:浏览器不认识,直接认为是危险证书
  2. 证书颁发的机构是确实存在的,于是根据CA名,找到对应内置的CA根证书、CA的公钥。用CA的公钥,对伪造的证书的摘要进行解密,发现解不了,认为是危险证书。
  3. 对于篡改的证书,使用CA的公钥对数字签名进行解密得到摘要A,然后再根据签名的Hash算法计算出证书的摘要B,对比A与B,若相等则正常,若不相等则是被篡改过的。
  4. 证书可在其过期前被吊销,通常情况是该证书的私钥已经失密。较新的浏览器如Chrome、Firefox、Opera和Internet Explorer都实现了在线证书状态协议(OCSP)以排除这种情形:浏览器将网站提供的证书的序列号通过OCSP发送给证书颁发机构,后者会告诉浏览器证书是否还是有效的。
    1、2点是对伪造证书进行的,3是对于篡改后的证书验证,4是对于过期失效的验证。

证书防篡改过程

公钥和个人信息用hash生成消息摘要,ca私钥用rsa加密消息摘要生成数字签名,原信息+数字签名为数字证书

浏览器要用ca机构的公钥解密后才能拿到数字签名,然后用相同的hash算法生成消息摘要,对比摘要来保证证书的合法性

results matching ""

    No results matching ""