Https理论
https://www.jianshu.com/p/a3a25c6627ee
在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,之后IETF对SSL 3.0进行了升级,于是出现了TLS(Transport Layer Security) 1.0,定义在RFC 2246。实际上我们现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词,但无论是TLS还是SSL都是上个世纪的事情,SSL最后一个版本是3.0,今后TLS将会继承SSL优良血统继续为我们进行加密服务。目前TLS的版本是1.2。
Https的工作原理
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法
TCP、Https、SSL/TLS、https的关系
网络协议套件
上图截自维基百科,对协议进行了明确的划分。
-
TCP
传输控制协议,属于传输层协议,提供可靠数据传输。它为http等应用层协议提供服务。 -
Http
超文本传输协议,属于应用层协议。依赖于TCP协议。 -
SSL/TLS
安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。位于某个可靠的传输协议(例如 TCP)上面,属于应用层协议。 -
Https
在Http和TCP中间加入了SSL/TLS,保证数据传输的安全性
Https抓包演示
https请求
上面是我使用Avanced REST client请求我的https接口,整个请求是没问题的,后面我们就会抓下这个请求的包进行分析。
为了方便演示整个流程,我使用了自己的云服务器和已备案的域名,证书直接在阿里云上申请的免费证书。
环境配置
这里web服务器我们使用Nginx。
首先将阿里下发的证书放到nginx的conf下(新建一个cert文件夹)
nginx_cert.png
配置nginx
nginx_conf.png
当然我们的后台服务得启动起来。端口9000。这里我用的Springboot。
作者:小狸junior
链接:https://www.jianshu.com/p/a3a25c6627ee
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。