网络信息安全|第6章:Wireshark 抓包分析 HTTPS
Synopsis: 用 Wireshark 抓包来分析如何建立 TCP 连接、TLS 连接
1. Wireshark 入门
到 Wireshark 官网 下载对应你的操作系统的版本,比如 https://1.as.dl.wireshark.org/win64/Wireshark-win64-3.0.2.exe
,然后一直 Next 默认即可
打开 Wireshark 软件后,首先需要确定你待会将要抓包的网卡名,一般是显示数据包最多的那张网卡,如下图所示,然后 双击
此网卡就会开始抓包了:
2. TCP 三次握手
请先按照 网络信息安全|第4章:启用 HTTPS 文章所述,开启服务器 192.168.40.123 上 NGINX 的 HTTPS 功能(基于 TLS v1.2)
在浏览器中访问 https://www.wangy.com
后,停止 Wireshark 抓包,并在过滤器中输入 ip.addr == 192.168.40.123
并敲回车键,只查看客户端与此服务器之间的往来数据包:
前三个数据包就是建立 TCP 连接所需的三个步骤了:
💖1. (SYN
) 假设客户端想要与服务器建立 TCP 连接,那么客户端首先会发送带 SYN(Synchronize Sequence Number)
标志位的数据包(或者称为 segment
),用来告诉服务端它已经准备好可以开始通信了,并且通信将从 sequence number(缩写为 seq
) 为 X
开始
💎2. (ACK
+ SYN
) 服务端响应客户端的请求,设置 ACK(Acknowledgement)
标志位,并设置 ACK 的值为 X + 1
,表示服务端收到了客户端发来的序列号为 X 的数据包。另外,为了实现网络 全双工通信(full-duplex communication)
,服务端也需要发送 SYN
给客户端,所以服务端还会为这个响应的数据包再设置 SYN
标志位,并且假设此数据包的序列号为 Y
👑3. (ACK
) 最后,客户端还需要再发送一个设置了 ACK
标志位的数据包给服务端,此数据包的序列号为 Y + 1
,表示客户端已接收到服务端发来的序列号为 Y
的响应数据包。客户端这次发送的数据包的序列号为 X + 1
,因为客户端发送的第一数据包序列号为 X,那这算是第二个数据包,当然就是 X + 1 啦
至此,客户端和服务端成功地建立了全双工的 TCP 连接
3. TLS v1.2
3.1 RSA 握手
为了让 Nginx 服务器与客户端握手时,只使用 RSA
算法作为 密钥交换
算法(正式环境中请勿使用 RSA 进行密钥交换),我们需要修改 Nginx 的配置文件:
运行 nginx -t
检查配置文件没有错误后,重启 Nginx 服务:
此时,再次打开 Wireshark
软件,选择客户端与 Nginx 服务器连接的网卡并双击开始抓包,然后在浏览器中访问 https://www.wangy.com
后,停止 Wireshark 抓包,并在过滤器中输入 ip.addr == 192.168.40.123 and tls
并敲回车键,只查看客户端与此服务器之间基于 TLS 协议相关的数据包:
关于握手的每个步骤的详细解析请查看: http://www.madmalls.com/blog/post/establishing-ssl-tls-secure-connection/#31-rsa
3.2 Diffie–Hellman 握手
为了让 Nginx 服务器与客户端握手时,默认使用 ECDHE
算法作为 密钥交换
算法,我们需要修改 Nginx 的配置文件:
运行 nginx -t
检查配置文件没有错误后,重启 Nginx 服务:
此时,再次打开 Wireshark
软件,选择客户端与 Nginx 服务器连接的网卡并双击开始抓包,然后在浏览器中访问 https://www.wangy.com
后,停止 Wireshark 抓包,并在过滤器中输入 ip.addr == 192.168.40.123 and tls
并敲回车键,只查看客户端与此服务器之间基于 TLS 协议相关的数据包:
关于握手的每个步骤的详细解析请查看: http://www.madmalls.com/blog/post/establishing-ssl-tls-secure-connection/#32-diffie-hellman
4. TLS v1.3
请先按照 网络信息安全|第5章:让你的 Nginx 支持 TLS v1.3 文章所述,让服务器 192.168.40.123 上的 NGINX 支持 TLS v1.3 协议
然后,再次打开 Wireshark
软件,选择客户端与 Nginx 服务器连接的网卡并双击开始抓包,然后在浏览器中访问 https://www.wangy.com
后,停止 Wireshark 抓包,并在过滤器中输入 ip.addr == 192.168.40.123 and tls
并敲回车键,只查看客户端与此服务器之间基于 TLS 协议相关的数据包:
关于握手的每个步骤的详细解析请查看:http://www.madmalls.com/blog/post/establishing-ssl-tls-secure-connection/#4-tls-v13
0 条评论
评论者的用户名
评论时间暂时还没有评论.