W'hat this 数字证书
数字证书的目的就是验证服务端的公钥是否有效且属于该服务端,通过CA签名的方式确保其真实性,避免中间人伪造公钥进行攻击。
https中采用非对称加密方式 客服端:保存自己的一把私钥和服务端的公钥 服务器:保存自己的一把私钥和服务端的公钥
- 首先服务端将自己的公钥及网站信息交给权威机构(CA)
- 则CA拿到后会将网站信息进行单向哈希算法加密(不可逆),得到一串固定字符长度,称之为摘要
- 接着CA会用自己的私钥对摘要进行加密,称之为数字签名
- 最后将数字签名及公钥整合在一起,称之为数字证书返还给服务端
服务端将数字证书发送给客户端(即客户端获取服务端公钥) 服务器在获取到数字证书后,服务器会将数字证书发送给客户端,客户端就需要用CA的公匙解密数字证书并验证数字证书的合法性。那我们如何能拿到CA的公匙呢?我们的电脑和浏览器中已经内置了一部分权威机构的根证书,这些根证书中包含了CA的公匙。
之所以是根证书,是因为现实生活中,认证中心是分层级的,也就是说有顶级认证中心,也有下面的各个子级的认证中心,是一个树状结构,计算机中内置的是最顶级机构的根证书,不过不用担心,根证书的公匙在子级也是适用的。
客户端用CA的公匙解密数字证书,如果解密成功则说明证书来源于合法的认证机构。解密成功后,客户端就拿到了摘要。
此时,客户端会按照和CA一样的Hash算法将申请信息生成一份摘要,并和解密出来的那份做对比,如果相同则说明内容完整,没有被篡改。最后,客户端安全的从证书中拿到服务器的公匙就可以和服务器进行安全的非对称加密通信了。服务器想获得客户端的公匙也可以通过相同方式。
本文由作者按照
CC BY 4.0
进行授权