存在的问题:
非对称加密效率太低, 这会严重影响加解密的速度,进而影响到用户打开页面的速度。
无法保证服务器发送给浏览器的数据安全, 服务器的数据只能用私钥进行加密(因为如果它用公钥那么浏览器也没法解密啦),中间人一旦拿到公钥,那么就可以对服务端传来的数据进行解密了,就这样又被破解了。
HTTPS使用对称加密和非对称加密结合
传输数据阶段依然使用对称加密,但是对称加密的秘钥我们采用非对称加密传输。
浏览器向服务器发送client_random和加密方法列表。
服务器接收到,返回server_random、加密方法以及公钥。
浏览器接收,接着生成另一个随机数pre_master, 并且用公钥加密,传给服务器。(重点操作!)
服务器用私钥解密这个被加密后的pre_master。
到此为止,服务器和浏览器就有了相同的 client_random
、server_random
和 pre_master
, 然后服务器和浏览器会使用这三组随机数生成对称秘钥。有了对称秘钥之后,双方就可以使用对称加密的方式来传输数据了。
CA (数字证书)
使用对称和非对称混合的方式,实现了数据的加密传输。但是这种仍然存在一个问题,服务器可能是被黑客冒充的。这样,浏览器访问的就是黑客的服务器,黑客可以在自己的服务器上实现公钥和私钥,而对浏览器来说,它并不完全知道现在访问的是这个是黑客的站点。
服务器需要证明自己的身份,需要使用权威机构颁发的证书,这个权威机构就是 CA(Certificate Authority), 颁发的证书就称为数字证书 (Digital Certificate)。
对于浏览器来说,数字证书有两个作用:
通过数字证书向浏览器证明服务器的身份
数字证书里面包含了服务器公钥
下面我们来看一下含有数字证书的HTTPS的请求流程
相对于不含数字证书的HTTPS请求流程,主要以下两点改动
服务器没有直接返回公钥给浏览器,而是返回了数字证书,而公钥正是包含数字证书中的;
在浏览器端多了一个证书验证的操作,验证了证书之后,才继续后序流程。
参考
如何用通俗易懂的话来解释非对称加密?
十分钟搞懂HTTP和HTTPS协议?
HTTPS 原理分析――带着疑问层层深入
图解HTTP
浏览器工作原理与实践
(1.6w字)浏览器灵魂之问,请问你能接得住几个?
推荐教程:web服务器安全
以上就是HTTPS怎么保证安全?(详解)的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
更多相关阅读请进入《Https》频道 >>