• 如何利用Wireshark解密SSL和TLS流量


    如何利用Wireshark解密SSL和TLS流量

    来源 https://support.citrix.com/article/CTX135121

    概要

    本文介绍在Wireshark网络协议分析仪中如果解密SSL和TLS流量

    要求

    • 以下基本知识:

    • 网络追踪

    • 网络,TCP/IP和SSL/TLS协议

    • 证书和公私钥的使用

    • Wireshark网络协议分析仪

    • Wireshark 软件支持SSL解密
    • 服务器或设备的私钥,私钥格式为PKCS#8 PEM

    背景

    在Wireshark中,SSL解析器功能完整,且支持高级特性,如提供加密私钥时的SSL解密。这对于使用SSL或TLS加密的思杰产品的排错有很大的帮助。

    步骤

    Wireshark 设置

    • 在Wireshark中,SSL解析器功能完整,且支持高级特性,如提供加密私钥时的SSL解密。这对于使用SSL或TLS加密的思杰产品的排错有很大的帮助。

    • 从菜单中选择Edit > Preferences.

    • 打开Preferences 窗口,展开Protocols.

    • 下拉选择 SSL.

    • 在RSA keys list后的空白处,提供以下信息<ip>,<port>,<protocol>,<key_file_name> (如上图所示)
      其中:
      <ip>
      是具有私钥的服务器或设备的IP地址
      <port>
       是SSL/TLS端口号,通常是443
      <protocol>
       通常是HTTP
      <key_file_name>
       是私钥的名称和路径is the location and file name of the private key
      Note:
       逗号间没有符号。而且,使用分号间隔用于不同条目。
      “<ip>,<port>,<protocol>,<key_file_name>;<ip>,<port>,<protocol>,<key_file_name>;<ip>,<port>,<protocol>,<key_file_name>”.
    • SSL debug file后的空白处填入排错文件的路径和文件名
    • 点击 OK.
    • SSL则被解密(解密的SSL如下图所示)

    私钥格式

    Wireshark只要有私钥就可以解密SSL流量。私钥需要时decrypted PKCS#8 PEM format (RSA)格式。你可以打开私钥看它的内容。如果是二进制,则是DER格式,不能用于Wireshark解密。

    你可以使用OpenSSL转换密钥格式。例如,可以将PKCS#8 DER格式的密钥转化成decrypted PKCS#8 PEM format (RSA)格式。在$提示符后输入如下指令:

    openssl pkcs8 -nocrypt -in der.key -informat DER -out pem.key -outformat PEM

    其中:

    der.key 是DER密钥文件的文件名和路径

    pem.key是pem文件的文件名和路径

    解密后的decrypted PKCS#8 PEM format (RSA)格式如下:

    注意密钥开头为:

    -----BEGIN RSA PRIVATE KEY-----

    如果开头为:

    -----BEGIN ENCRYPTED PRIVATE KEY-----

    则这个密钥需要用适当的方法解密。OpenSSL可以实现。

    • At the $ prompt, enter the command: 在$提示符,输入命令:
      openssl rsa

      If you enter this command without arguments, you are prompted as follows: 如果输入指令不带参数,则出现以下字样:
      read RSA key
    • 输入解密的私钥文件名

    你可以在openssl rsa后加上参数,假如你知道私钥和解密的PEM的文件名。例如,私钥的文件名是myprivkey.pvk和解密的文件名问keyout.pem,命令如下:
    openssl rsa –in myprivkeypvk -out keyout.pem

    附加信息

    http://www.wireshark.org/

    http://wiki.wireshark.org/SSL

    http://www.wireshark.org/docs/dfref/s/ssl.html

    http://www.openssl.org/docs/apps/rsa.html#EXAMPLES

    http://sourceforge.net/project/showfiles.php?group_id=23617&release_id=4880

    =============

    使用 Wireshark 解密 SSL 流量,支持两种方式:

    1. 使用证书解密,需要配置对端服务器私钥
    2. 不使用证书解密,需要设置 WSSLKEYLOGFILE

    私钥

    如何利用 Wireshark 解密 SSL 和 TLS 流量
    edit -> preferences -> protocols -> ssl: rsa keys list

    WSSLKEYLOGFILE

    WSSLKEYLOGFILE 是 NSS 底层密码库提出的一种技术,所有基于 NSS 的应用程序在运行期间可以将通信过程中的会话密钥导出到一个文件中,一旦有了这个密码文件,Wireshark 就能够解密所有的 TLS 流量了。

    现在 OpenSSL 等其他的 TLS 实现也能支持这种方式,通过 Chrome 和 Firefox 浏览器捕获 TLS 流量,Wireshark 就能够解密

    配置

    关于一些 TLS 的 DEBUG 技巧和工具集介绍

    ubuntu 下使用命令行启动浏览器为了保证能读到环境变量

    $ export SSLKEYLOGFILE=/tmp/keylog.txt
    $ /opt/google/chrome/chrome
    $ /usr/bin/firefox

    使用

    在wireshark中设置key log路径
    edit -> preferences -> protocols -> ssl: (Pre)-Master-Secret log filename: /tmp/keylog.txt

    设置之后可以解密 SSL 流量,可以看到 SSL 交互过程,可以 Follow SSL Stream 查看完整 HTTPS 数据

    Ref

      1. Using wireshark to determine which RSA PRIVATE KEY SSL conversation?
      2. Wireshark 对 HTTPS 数据的解密
      3. 使用 Wireshark 解密 TLS 1.3 流量
      4. Wireshark 解密 TLS 数据包

    ======== End

  • 相关阅读:
    postgres--流复制
    postgres--wal
    postgres--vacuum
    postgres10配置huge_pages
    Postgres间隔大量写IO的解决办法
    PostgreSQL配置文件--其他
    PostgreSQL配置文件--AUTOVACUUM参数
    PostgreSQL配置文件--实时统计
    PostgreSQL配置文件--日志和错误
    PostgreSQL配置文件--QUERY TUNING
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/14260552.html
Copyright © 2020-2023  润新知