姊妹篇:

[ipsec][strongswan] 使用wireshark查看strongswan ipsec esp ikev1 ikev2的加密内容

[https][tls] 如何使用wireshark查看tls/https加密消息--使用私钥

需求

学习SSL/TLS的过程中, 使用wireshark转包分析,是常用的手段.

我自建nginx自签名证书, 抓了一个访问请求的包, 是这样的.

我们可以看到, 从第8个包开始, 便出现了密文. 即使我不关心TLS上层的业务内容, 第八和第九个包里边的最后两段加密数据段, 也是需要关心的. 他们是Finshed报文,是协商报文的一部分.

配置

wirshark

我们知道wireshark具体解密TLS密文的能力. (我们当然知道, 因为我们经验丰富), 而且我们还知道从下边的这个地方进行配置:

edit->preferences->protocols->tls

情况A: 当我们使用RSA进行秘钥交互的时候, 就对RSA keys list项进行配置, 导入server端的私钥.

情况B:  当我们使用DH进行秘钥交互的时候, 就对Master Secret log filename进行配置, 导入单次会话的主密钥.  因为DH的秘钥交互过程是明文交互的, 所以只配这个,也能解开全部的密文.

curl或firefox

情况A并没有这个步骤. 下面讨论情况B

wireshark的配置中需要的配置文件, 是用来保存主秘钥的. 称为 SSLKEYLOGFILE

在通过curl或firefox访问之前, 设置环境变量SSLKEYLOGFILE的值为目标文件, 在执行过curl或firefox之后, 主密钥会被自动记录到该文件中, 如下以curl为例, firefox同样适用:

┬─[tong@T7:~/Works/tls]─[:: PM]
╰─>$ export |grep SSL
SSLKEYLOGFILE /home/tong/Works/tls/keylog
┬─[tong@T7:~/Works/tls]─[:: PM]
╰─>$ curl --cacert ~/Keys/https/root/root.cer https://TTTrust:443/

可以看到该文件的内容:

┬─[tong@T7:~/Works/tls]─[:: PM]
╰─>$ cat keylog
CLIENT_RANDOM db23bf9a63b494ba72ecfaef831f55954f887576xxxxa2c45e46e7f631ea160d bfc5346bb7c0573b95e637a973524884ec912b67d5ce747c1a169e1d6ba57643ff8a1e97b33b11c5d6ff249961efxxxx

效果

现在, 按前文配置该文件在wireshark中, 可以看见下面的效果:

协商包与数据包都被解开了.

参考

<<everything curl>>是curl主页上推荐的官方书面, 其中一个章节讲述了以上方法

https://ec.haxx.se/tls-sslkeylogfile.html

[https][tls] 如何使用wireshark查看tls/https加密消息--使用keylog的更多相关文章

  1. [https][tls] 如何使用wireshark查看tls/https加密消息--使用私钥

    之前总结了使用keylog进行https流量分析的方法: [https][tls] 如何使用wireshark查看tls/https加密消息--使用keylog 今天总结一下使用服务器端证书私钥进行h ...

  2. [ipsec][strongswan] 使用wireshark查看strongswan ipsec esp ikev1 ikev2的加密内容

    一,编译,启用strongswan的save-keys plugin ./configure --prefix=/root/OUTPUT --exec-prefix=/root/OUTPUT --en ...

  3. 开启 TLS 1.3 加密协议,极速 HTTPS 体验

    随着互联网的发展,用户对网络速度的要求也越来越高,尤其是目前在大力发展 HTTPS 的情况下,TLS 加密协议变得至关重要.又拍云在 HTTPS 的普及和性能优化上,始终做着自己的努力和贡献.2018 ...

  4. HTTPS详解二:SSL / TLS 工作原理和详细握手过程

    HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...

  5. 为什么Wireshark无法解密HTTPS数据

    为什么Wireshark无法解密HTTPS数据 导读 由于需要定位一个问题,在服务器上tcpdump抓取https数据包,然后下载到本地打开wireshark分析.然后我们下载域名私钥配置到wires ...

  6. SSL/TLS协议详解(下)——TLS握手协议

    本文转载自SSL/TLS协议详解(下)--TLS握手协议 导语 在博客系列的第2部分中,对证书颁发机构进行了深入的讨论.在这篇文章中,将会探索整个SSL/TLS握手过程,在此之前,先简述下最后这块内容 ...

  7. 内网Https 自签Https证书 配合Tomcat 实现内网Https详细图文

    内网项目启用Https配置手册 软件需求: OpenSSL https://www.openssl.org/ 已经安装了Java Jdk环境 制作前的需求: 已经配置了Jdk环境变量 安装好OpenS ...

  8. Android Https相关完全解析 当OkHttp遇到Https

    一.概述 其实这篇文章理论上不限于okhttp去访问自签名的网站,不过接上篇博文了,就叫这个了.首先要了解的事,okhttp默认情况下是支持https协议的网站的,比如https://www.baid ...

  9. HTTPS系列干货(一):HTTPS 原理详解

    HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷 ...

随机推荐

  1. Jmeter-Critical Section Controller(临界区控制器)(还没看,是一个控制请求按顺序执行的东东)

    The Critical Section Controller ensures that its children elements (samplers/controllers, etc.) will ...

  2. html中使用mathjax数学公式

    测试用例: test.html: <!DOCTYPE html> <html> <head> <link rel="stylesheet" ...

  3. Tomcat免安装版执行tomcat9.exe闪退

    Tomcat免安装版点击startup.bat可成功启动,但是执行tomcat9.exe时却闪退,这是因为免安装版的tomcat不会自动把tomcat注册到windows服务里,需要手动注册. 解决办 ...

  4. Theano入门

    由于自己的一个小项目需要Theano部分的开源代码,所以学习一下并记录入门的经典网站. 入门中文博客:https://blog.csdn.net/hjimce/article/details/4680 ...

  5. Python界面常用GUI包

    作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多,我认识的并不多,这里只列出几种我认识的 1.tkin ...

  6. Dubbo服务器与普通服务器的区别

    Dubbo是一个阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 1.什么是分布式服务框架 分布式有两个特点,分别是内聚性和透明性(比如 ...

  7. PHP设计模式 - 门面模式

    门面模式 (Facade)又称外观模式,用于为子系统中的一组接口提供一个一致的界面.门面模式定义了一个高层接口,这个接口使得子系统更加容易使用:引入门面角色之后,用户只需要直接与门面角色交互,用户与子 ...

  8. Netty--索引

    Netty 入门示例 Netty原理架构解析 Netty 基本原理 Netty面试题 阿里的Netty知识点你又了解多少

  9. Delphi 开发微信公众平台 (一)- 定义数据结构

    先定义数据类型: unit rtcMW.Wechat.Types; interface uses Generics.Collections, Rest.Json, System.Json.Serial ...

  10. gorm 批量插入数据

    使用gorm 插入数据的时候,根据官方文档可以使用Create或者FirstOrCreate(). 但是官方没有提供批量插入数据的方法. 根据github的 issue得知,我们可以通过自己拼接sql ...