【网络】实践:Wireshark分析HTTPS协议

介绍

在本博客中我们基于一个简单的HTTPS会话示例,展示如何通过各种加密算法等,在TLSv1.2协议规则下计算并验证各个域,为学习HTTPS协议以及实现HTTPS协议的初学者提供参考示例。

本博客示例TLS协议的基本信息如下:

  • TLS版本:TLSv1.2
  • Cipher:TLS_RSA_WITH_AES_128_CBC_SHA, 选择该套件的原因是其不是十分复杂,适合用于展示;
  • 扩展:Extened Master SecretMaster Secret的计算不同于最初的TLS v1.2 RFC文档使用的方式,具体参见对应的RFC。
  • 扩展:Encrypt-then-MAC:最初的TLSv1.2协议使用MAC-then-Encrypt进行消息加密和验证,但是该扩展先加密再计算摘要验证。

下面的讲解会假定你已经初步了解TLS协议的某些细节,如果遇到不清楚的概念,你随时可以参考博客HTTPS协议的正文和附录部分,包括Extened Master SecretEncrypt-then-MAC扩展和PRF等内容。

此外,下面的所有内容都可以在github仓库net-protocol-tools:demo/demo-TLS_RSA_WITH_AES_128_CBC_SHA中找到。

Setup

准备工具

此次分析实践用到的主要工具是基于Wireshark, opensslnginx:

  • Wireshark:抓取流量包,导入RSA私钥后可以解析各个加密的域;可以用来验证我们手动分析的结果;
  • openssl:用于生成私钥、证书、计算摘要和加解密;
  • nginx: 配置HTTPS服务器。

此次分析在Windows上进行,其中openssl工具使用cygwin安装。对于LinuxMacos,可以使用对应的包管理器安装openssl,版本信息:1.1.1c

上面的工具安装完成后,我们创建一个目录demo并进入其中,后面的所有数据都会保存在demo中。

openssl命令参考博客:openssl及其使用

配置Nginx服务器和相关证书

参考另一篇博客nginx配置HTTPS实践案例1部分,主要信息如下:

  • 网址:https://my-ssl.test:443
  • 私钥:my-ssl.test.key
  • 证书:my-ssl.test.crt

将上面的my-ssl.test.keymy-ssl.test.crt复制到demo目录方便后续引用。

打开Wireshark并准备过滤数据

  • 1.准备监听数据
    我们将使用本地端口12443连接到上面我们配置的nginx服务器,因此我们使用tcp.port==12443 && tls来过滤包,如下图所示:
    在这里插入图片描述
  • 2.导入私钥进行解密
    Edit > Preferences > Protocols下找到TLS协议选项,按照下面的指引导入私钥:
    edit TLS config
  • 3.点击Wireshark工具栏中左侧的在这里插入图片描述按钮开始进行捕获

使用openssl构造请求

打开一个命令行并切换到demo目录,执行下面的命令:

echo -ne 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值