http协议传输过程中所有的数据都是明文的,https对数据进行加密保证安全性,具体思路演化如下:
1、
数据使用对称加密,由浏览器随机生成对称加密使用的密码,发送给服务器
2、为了保证对称加密的密码不被劫持,
使用非对称加密处理对称加密的密码。
3、服务器生成非对称加密的公钥、私钥,将公钥发送给浏览器,
浏览器使用公钥加密对称加密的密码,然后发送给服务器,服务器使用私钥解密获得对称加密的密码
4、
使用3中的方法可以通过"传令官"形式的恶意中间人获取数据,也就是对拦截服务器的公钥,将自己的公钥给返回给浏览器,伪装成浏览器访问服务器,伪装成服务器返回数据给浏览器。
5、
服务器通过有公信力的机构(CA)颁发的数字证书,保证服务器的公钥安全发给浏览器。
CA制作证书最关键的步骤是:将服务器的公钥和其他信息经过hash,使用CA自己的私钥加密形成数字签名,
由于"传令官"不可能知道CA的私钥,所以无法伪造数字证书。制作证书具体如下:
浏览器内置CA的公钥,对数字签名解密,并同公钥和其他信息的hash值进行对比:
根据上述原理,https的大体流程如下:
补充:数字证书的验证是一个
证书链层层验证的过程,最终到根证书(浏览器内置)判断服务器是否可信。浏览器除了发送数据外,还会发送数据的hash值,以便服务器进行校验。
阅读(2465) | 评论(0) | 转发(0) |