HTTPS-客户端与服务器三次握手过程(含wireshark分析)

流程是这个样子的

HTTPS-客户端与服务器三次握手过程(含wireshark分析)

大体流程是这样的!

客户端生成一个随机数,然后把支持的加密套发给服务器:

HTTPS-客户端与服务器三次握手过程(含wireshark分析)

服务器那边随后生成一个随机数,然后把旋转的加密套给客户端:

HTTPS-客户端与服务器三次握手过程(含wireshark分析)

然后服务器把证书(公钥给客户端):

HTTPS-客户端与服务器三次握手过程(含wireshark分析)

并且告诉客户端Over,也就是对应的Server Ky Exchange, Server Hello Done

HTTPS-客户端与服务器三次握手过程(含wireshark分析)

然后客户端拿着服务器的随机数和证书生成预主**发给服务端:

HTTPS-客户端与服务器三次握手过程(含wireshark分析)

然后客户端在给服务端说,我现在准备刚刚商量的进行加密了你接收下(客户端随机数 + 服务端随机数 + 预主** = 主**):

(Change Cipher Spec)

HTTPS-客户端与服务器三次握手过程(含wireshark分析)

然后客户端对服务器再发个over(Encryted Handshake Message):

HTTPS-客户端与服务器三次握手过程(含wireshark分析)

然后服务端告诉客户端我已经开始用协商好的主**了(Change Cipher Spec, Encrypted Handshake Message):

HTTPS-客户端与服务器三次握手过程(含wireshark分析)

随后就可以进行加密传输了。

 

个人感觉这个安全性也是有点大的。中间人攻击。

万一XXX路由器被hack搞了,他们搞一个抓包。把上面这个所有的东西都抓了,那么就可以获取数据包了。

当然这个是浏览器的。

不过,如果是APP,那么好一点,可以搞一个双向验证,也就是说。客户端验证服务端的证书,服务端验证客户端的证书。那么估计会稍微好点。

下面给出中间人攻击的原理图:

HTTPS-客户端与服务器三次握手过程(含wireshark分析)

“中间人攻击”原理
1.客户端请求被劫持(如DNS劫持等),所有的客户端请求均被转发至中间人的服务器;
2.中间人服务器返回中间人伪造的“伪证书”(包含伪公钥);
3.客户端创建随机数,通过中间人证书的伪公钥对随机数进行加密后传输给中间人,然后凭随机数构造对称加密算法对要进行传输的数据内容进行对称加密后传输;
4.中间人因为拥有客户端生成的随机数,从而能够通过对称加密算法进行数据内容解密;
5.中间人再以“伪客户端”的身份向正规的服务端发起请求;
6.因为中间人与服务器之间的通信过程是合法的,正规服务端通过建立的安全通道返回加密后的数据内容;
7.中间人凭借与正规服务器建立的对称加密算法进行数据内容解密;
8.中间人再通过与客户端建立的对称加密算法对正规服务器返回的数据内容进行加密传输;
9.客户端通过中间人建立的对称加密算法对返回的数据内容进行解密;