HTTPS=HTTP+SSL/TLS
TLS是SSL的升级版,SSL由于某种原因被废除了。
https是在http基础上进行了加密保护,这个加密协议就是tls,利用抓包工具可以看出我们用浏览器访问http网页和https网页的不同,https多出了许多数据包。
1.下图是加密过程
文章图片
- 客户端提交https请求
- 服务器响应客户,并把证书公钥发给客户端
- 客户端验证证书公钥的有效性
- 有效后,会生成一个会话密钥
- 用证书公钥加密这个会话密钥后,发送给服务器
- 服务器收到公钥加密的会话密钥后,用私钥解密,回去会话密钥
- 客户端与服务器双方利用这个会话密钥加密要传输的数据进行通信
https://www.cnblogs.com/shenkebky/p/8461841.htm这篇博客对公钥和私钥的讲解很形象
个人理解:公钥和私钥是对应的,一个公钥加密的数据用对应的私钥来解密,加密就是按某种方式把数据改变了解密再改回来。用私钥加密的,可以用公钥来验证,公钥别人是可以知道的,但是他不知道私钥即使你得到了我的数据,你没有私钥还是无法解密。私钥是服务器才有的。
3.整体总结
- 客户端发送https请求
- 服务器返回一个公钥
- 客户端验证有效后生成一个随机密钥,之后传数据就是用这个值加密的
- 客户端把这个值用公钥加密传过去,服务器用私钥解密
- 客户端服务器都知道了这个随机值,用这个值就可以加密通信。
https://www.wosign.com/FAQ/faq_2018093001.htm Tls/SSL的加密原理
https://zhidao.baidu.com/question/717551910440658845.html 百度论坛
【SSL/TLS加密原理】https://www.cnblogs.com/shenkebky/p/8461841.html对公钥和私钥很好的讲解
推荐阅读
- 日记博文|几种网络编程方式的比较
- C++|浅析boost::asio::deadline_timer运行机制
- JQuery Easy UI 使用
- nginx 源码(5)事件驱动架构
- nginx 源码(2)运行
- 网络编程|nginx 源码(4)主流程
- nginx 源码(1)编译
- 网络编程|nginx 源码(3)调试
- epoll如何判断客户端不可读
- 关于TCP协议收到数据不完整