HTTPs连接的前发生了什么

一、 https解决什么问题

https要解决的问题就是中间人攻击,什么是中间人攻击(Man In The Middle Attack)呢?如下图所示:


你和服务器的连接会经过一个中间人,你以为你和服务器在正常地传输入数据,其实这些数据都先经过了一个中间人,这个中间人可以窥探你的数据或者篡改你的数据后再发给服务器,相反也可以把服务器的数据修改了之后再发给你。而这个中间人对你是透明的,你不知道你的数据已经被人窃取或者修改了。

二、https连接的过程

如果对于一个外行人,可以这么解释:

https连接,服务器发送它的证书给浏览器(客户端),浏览器确认证书正确,并检查证书中对应的主机名是否正确,如果正确则双方加密数据后发给对方,对方再进行解密,保证数据是不透明的

但是如果这个外行人比较聪明,他可能会问你浏览器是怎么检验证书正确的,证书又是什么东西,加密后不会被中间人破解么?

首先证书是然后打开WireShark,设定过滤条件为源IP和目的IP都为上面的IP,就可以观察到整一个连接建立的过程:个什么东西,可(3)sessionId,会话ID,第一次连接时为0,如果有sessionId,则可以恢复会话,而不用重复握手过程:以在浏览器上面看到证书的内容,例如我们访问谷歌,然后点击地址栏的小锁:


再点击详情->查看证书,就可以看到整个证书的完整内容:


接下来再用一个WireShark的抓包工具,抓取整个https连接的包,并分析这些包的内容。

下面以访问淘宝为例,打开淘宝,可以在Chrome里面看到淘宝的IP


然后打开WireShark,设定过滤条件为源IP和目的IP都为上面的IP,就可以观察到整一个连接建立的过程:


第一步是肯定是要先建立TCP连接,这里就不说了,我们从Client Hello开始说起:

1. Client Hello

我们在wireshark里面观察,将client hello里面客户端发给服务器的一些重要信息罗列出来

(1)使用的TLS版本是1.2,TLS有三个版本,1.0,1.1,1.2,1.2是最新的版本,https的加密就是靠的TLS安全传输层协议:


2)客户端当前的时间和一个随机密码串,这个时间是距Unix元年(1970.1.1)的秒数,这里是147895117,随机数的作用下面再提及。


(3)sessionId,会话ID,第一次连接时为0,如果有sessionId,则可以恢复会话,而不用重复握手过程:


(4)浏览器支持的加密组合方式:可以看到,浏览器一共支持22种加密组合方式,发给服务器,让服务器选一个。具体的加密方式下文再介绍


(5)还有一个比较有趣的东西是域名:


为什么说这个比较特别呢,因为域名是工作在应用层http里的,而握手是发生在TLS还在传输层。在传输层里面就把域名信息告诉服务器,好让服务根据域名发送相应的证书。

可以说,https = http + tls,如下图所示:


数据传输还是用的http,加密用的tls。tls和ssl又是什么关系?ssl是tls的前身,ssl deprecated之后,才开始有了tls 1.0、1.1、1.2

未完。。。。。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值