注:摘录自各个文章,把关键点整合了一下。
CA记为证书签发机构
证书生成过程:
CA产生一对RSA公私钥。
生成一个文件,记为P,包含:公钥、签发者ID、有效期、其他信息。
计算P的hash值,记为H。用私钥对H进行RSA加密,得到S。
则数字证书是(P,S)
别人验证证书的过程:
验证上述数字证书(P,S)过程:
从P中获得公钥,用公钥解密S得到H1。
计算P的hash值,得到H2。
若H1=H2,证明这个证书是有签发者签发给它的证书。(证书要在有效期内)
若H1!=H2,说明 P被篡改过 或者 证书不是CA签发的,总之有问题。
怎么判断证书是否有效
按上面说的,黑客可以自己给自己颁发证书,宣称自己是CA。所以如何来验证这个证书是黑客自己的呢还是那个著名的CA呢?
首先找到为CA颁发证书的上层CA,一层一层往上,直到找到一个可信的CA或者验证出错。比如往上找到了操作系统中颁发的根证书。根证书被认为绝对可信,是CA让厂商嵌在电子产品或软件里的。总之,根证书绝对可信。
PS:12306网站之前是自己给自己颁发证书,众多浏览器都会提醒用户该网站不安全。