之前总结了使用keylog进行https流量分析的方法:

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

今天总结一下使用服务器端证书私钥进行https加密信息解密的方法,如下:

一 server端

首先我有一个在4040端口开启了https服务的nginx server。使用如下证书与服务配置

╰─>$ ll ~/Keys/https/sni/ |grep test2
-rw-r--r-- tong tong .4K Sep : sni_test2.cer
-rw------- tong tong .7K Sep : sni_test2.key

二 client 端

服务启用后,在client端,分别使用DHE与AES算法进行秘钥协商通信,如下:

curl --cacert ~/Keys/https/root/root.cer  https://test2.www.local:4040 -v
* SSL connection using TLSv1. / ECDHE-RSA-AES256-GCM-SHA384
... ... curl -k --cacert ~/Keys/https/root/root.cer --ciphers AES128-GCM-SHA256 https://test2.www.local:4040 -v
* SSL connection using TLSv1. / AES128-GCM-SHA256
... ...

curl的算法支持列表,见如下链接的openssl小节

https://curl.haxx.se/docs/ssl-ciphers.html

使用tcpdump抓取以上两侧通信的pcap包

-rw-r--r--  root root .4K Oct  : -aes128.pcap
-rw-r--r-- root root .5K Oct : -dhe.pcap

三 wireshark

DHE协商算法,是不能被该方法解析的,只能使用keylog方式。任何一次一密的通信方式(完美前向加密)都不能使用该方法解析。

接下来,只分析aes128的数据包。

使用wireshark打开

在 edit->Preferences->Protocols->TLS->RSA keys list 中进行编辑,并将上文中提到的私钥sni_test2.key配置其中。如图:

之后,保存配置。可以看到加密的tls流量已经被成功解析了。

注意:

需要注意的是,key文件的格式,以及是否有密码。我的是没有密码的,格式如下:

╰─>$ file ~/Keys/https/sni/sni_test2.key
/home/tong/Keys/https/sni/sni_test2.key: PEM RSA private key

根据以前的经验,有密码的key可能会有一下问题。https://www.cnblogs.com/hugetong/p/6845436.html

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

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

    姊妹篇: [ipsec][strongswan] 使用wireshark查看strongswan ipsec esp ikev1 ikev2的加密内容 [https][tls] 如何使用wiresha ...

  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. BUG处理流程图

    流程描述: 1. 测试人员发现bug提交给开发. 2. 开发人员判断是否是bug. 3. 如果是bug,进行修改,修改完成后更改bug状态为已解决. 4. 如果不是bug,退回给测试人员并描述退回原因 ...

  2. 【各种误解解释】C-LODOP的三种角色及注册号

    该简短问答是从现象和误解和相关作为分类,主要是注册角色和注册号使用等.之前的相关博文(该相关博也有些链接到的博文,按照大类区分):LODOP和C-LODOP注册与角色等简短问答[增强版]. 确认角色: ...

  3. [LeetCode] 87. Scramble String 爬行字符串

    Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...

  4. [LeetCode] 337. House Robber III 打家劫舍 III

    The thief has found himself a new place for his thievery again. There is only one entrance to this a ...

  5. close yarn install --check-files

    To disable this check, please add `config.webpacker.check_yarn_integrity = false` to your Rails deve ...

  6. php常用的验证

    <?php namespace Vendor\Func; /** * 常用的验证 * Class Verify * @package Vendor\Func */ class Verify { ...

  7. Mysql查看优化后的SQL 语句

    EXPLAIN  EXTENDED 1先执行 EXPLAIN  EXTENDED 2 show warnings: EXPLAIN EXTENDED SELECT * FROM `receivable ...

  8. 使用无图形界面启动Centos

    Centos有些时候我们是不需要图形界面的 centos默认安装成功后是有图形界面的,为了减少系统开销,有时候我们需要无图形界面启动linux(centos7) systemctl set-defau ...

  9. 20191210-RobotFramework常见问题解决

    附加-问题解决 1.   执行robot用例的时候提示WebDriverException: Message: invalid argument: can't kill an exited proce ...

  10. TZOJ5697: 数据结构实验:归并排序

    #include<stdio.h> #include<stdlib.h> void merge(int a[], int start,int mid,int end) { )) ...