宁波住房和城乡建设网站,网站建设网络推广文章,可以看网站的手机浏览器,电子商务网站建设与管理试题协议栈 https是在http应用层和tcp传输层之间加入了一个安全层#xff08;SSL、TLS#xff09; #xff0c;加入安全层的主要目的是将传输内容加解密#xff0c;这样就避免了传输内容被窃听后#xff0c;泄露重要信息#xff08;如用户名、密码#xff09;#xff0c;加…协议栈 https是在http应用层和tcp传输层之间加入了一个安全层SSL、TLS 加入安全层的主要目的是将传输内容加解密这样就避免了传输内容被窃听后泄露重要信息如用户名、密码加密后即便被窃听窃听者得到的也是无用的密文因为窃听者没有解密密钥。 https执行逻辑 我们知道了https主要就是用来加密传输数据的防止被窃听那么他是如何进行加密、解密的呢如下图所示当client发送https请求时client不会像http那样先建立tcp直接将url发送至server发送url属于正式数据的传输而https要保证数据传输的加密。所以在tcp建立之后在正式http请求发送url之前会有一个ssl的握手过程该过程就是安全套接字要完成的 首先client会发送其支持的加密算法等信息 server收到请求后选择加密算法算法然后随同证书一起发送给client client收到响应后先进行证书认证认证会验证证书是否过期、域名是否一致最主要的是验证发送证书的人是不是证书的持有人CA签发的证书都会先使用hash摘要然后使用私钥签名通过CA的公钥和hash就可以验证签名生成一个随机数并保存然后使用证书上的公钥申请证书时server生成的加密该随机数后发送至server server收到加密后的随机数后使用私钥申请证书时server生成的将其解密并保存 此时双方已经持有安全通信的必要信息对称加密算法、随机数密钥可以进行安全通信了 加密url等数据进行正式的http请求 server收到http请求后会由安全层使用之前握手生成的随机密钥解密数据然后上传至http应用层此时就是普通的http信息了server响应时同样会经过安全层加密然后发送给client client接收到请求响应后安全层使用之前握手生成的随机密钥解密响应内容然后传给应用层至此一次完整的https请求就结束了。 https证书属性 https的证书遵循X.509标准会包含许多属性如下列属性签名算法、哈希算法、公钥就可以验证证书有没有被篡改即验证发送证书的人是不是证书的持有人。类似12306这样使用自己制作的证书如果自己可以保证证书本身的安全性其实和CA颁发的证书在数据传输安全性方面没有差别。如果无法保证证书的安全性就无法保证数据传输安全性了。比如私钥泄露别人就可以使用私钥伪造证书了、泄露出相同域名不同ip的另一份证书从而可以进行dns劫持。 https性能 看来https的握手过程还是蛮复杂的来看一下https的性能到底怎么样下图是打开一个https网站时间消耗情况Initial connection就是tcpssl50msssl为25ms可见ssl与tcp的耗时相当略高。 转载于:https://www.cnblogs.com/holoyong/p/7296292.html