最近看了介绍https的很多博客,好些都不太完整,在此做个总结,力图展示清楚https握手过程的全貌。若写得有误,还请指正;觉得写得不错,还请不吝点赞收藏~
https简介
我们知道http是明文传输的数据,存在着敏感数据被截获等风险。于是https应运而生。
简单来说,https=http+ssl/tls,即加密的http
ssl(Secure Socket Layer,安全套接字层)和tls(Transport Layer Security)都是用来加密的协议,可简单理解为加密算法不同
需提前掌握的概念
对称加密、非对称加密、公钥、私钥:
数字证书、摘要、数字签名(不清楚的请参考https://zhuanlan.zhihu.com/p/32754315)
https的握手过程(简易版)
参考自https://www.cnblogs.com/fengfengyang/p/9852481.html
-
客户端提交https请求
-
服务器响应客户,并把服务器公钥发给客户端
-
客户端验证公钥的有效性
-
有效后,客户端会生成一个会话密钥(一个随机数)
-
用服务器公钥加密这个会话密钥后,发送给服务器