ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于https

2021-07-10 18:58:05  阅读:170  来源: 互联网

标签:TLS 加密 握手 SSL 关于 https 服务器 客户端


http是明文通信,所以第三方可以窃听并获取通信内容,甚至是篡改,甚至冒充他人身份参与通信,通信安全没有任何保障。

SSL/TLS就是为了解决着三个问题设计的,在HTTP的基础上加上TLS就是https协议,对应到OSI模型上,就是在应用层(http协议)和传输层(TCP协议)中间增加了一个SSL/TLS子层,保障通信安全。

具体的实现是:在TCP握手完成后,进行SSL握手,通过握手,双方会彼此确认身份,并协商出一个密钥和加密方法,之后的数据收发都会用协商的加密方法和密钥进行加密解密。

SSL/TLS 四次握手

所以是否安全的关键都在于握手阶段的身份确认和密钥协商,身份确认是通过数字证书,由大家公认的机构颁发和校验;密钥协商流程相对复杂,需要在确认出一个只有双方才知道的密钥,具体的握手流程是

  1. 客户端->服务器:客户端告知服务器自己支持的加密方式、SSL/TLS的版本和一个随机数A
  2. 服务器->客户端:服务器告知客户端选择的加密方式、自己的证书(包含公钥)和服务器生成的另一个随机数B
  3. 客户端-> 服务器:客户端验证身份后,确认公钥的正确性,然后再生成一个随机数C,并用服务器证书中公钥加密,发送给服务器。
  4. 服务器-> 客户端:服务器收到加密的C后,用自己的私钥解密,得到C。然后给客户端发送接下来编码变更通知和握手结束通知。

至此,SSL握手阶段结束,服务器和客户端都知道ABC三个随机数,并且用他们生成一个密钥,接下来的通信数据都会通过这个密钥进行加密解密。

因为第三方没有服务器私钥,计算不出第三个随机数C,所以也没办法计算出密钥。因此只有通信双方可以解密出来对端发送的数据,保障了通信的安全。

https 耗时 vs http 耗时

就实际的通信流程来说,https是在http的基础上,多了初期的TLS四次握手和后期实际数据的加密解密。所以不管是连接建立和传输阶段,https都要比http慢一点点。

关于握手阶段的证书,也分不同安全等级,比如1024、2048、4096位证书,等级越高,加解密的耗时越多,所以并不是等级越高越好,在实际使用时,根据安全需求选择合适强度的证书。

参考:

标签:TLS,加密,握手,SSL,关于,https,服务器,客户端
来源: https://blog.csdn.net/nnuan/article/details/118639003

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有