1. 概述
    在SSL/TLS通信调试的过程中,用wireshark捕获的SSL/TLS通信的应用层报文是密文(见图1,协议类型只能解析到TCP),无法直接进行分析,此时我们需要掌握如何通过wireshark解密SSL/TLS报文、利用wireshark网络协议解析器,分析通信过程中的问题。
图1.通讯过程中SSL加密报文
  1. 前置要求
     基本知识
  • 网络跟踪: Wireshark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。通信过程中通过捕获网络封包后的分析来跟踪需要的网络信息。
  • TCP/ IP和SSL/ TLS协议:TLS与SSL在传输层对网络连接进行加密。
  • 证书和公钥和私钥的使用:SSL通信过程中必备元素。
  • Wireshark的网络协议解析器:捕包过程中针对固定的协议的自动解析功能
     支持SSL解密的Wireshark版本:截图所用wireshark版本为Version 1.12.0
     密钥格式为RSA格式
  1. 设置步骤
    有私钥,wireshark即可自动在抓包过程中解开SSL通信报文,设置步骤:
  2. 打开wireshark,捕包。
  3. 选择Edit>Preferences

图2.偏好设置

wireshark配置解密SSL wireshark解析ssl_wireshark配置解密SSL

  1. 选择Preferences里的Protocols

图3.选择协议

wireshark配置解密SSL wireshark解析ssl_封包_02

  1. 下滚选择SSL(协议)

图3.选择协议SSL

5. 在RSA keys list中,提供,,,<key_file_name>

是服务器的IP地址

是服务器监听的端口

是ssl(小写,大写不被识别)

<key_file_name>是私钥放置的位置

wireshark配置解密SSL wireshark解析ssl_wireshark_03

图4.编辑RSA key列表

wireshark配置解密SSL wireshark解析ssl_SSL_04

图4.添加RSA key列表信息

6.设置完成后选择OK即可解密SSL应用报文

wireshark配置解密SSL wireshark解析ssl_封包_05

图5.ssl解密捕包信息

从图5中我们可以清晰的看到服务器与终端的SSL通信过程,握手->交换证书->协商密钥->应用数据传输。

4. 问题定位

wireshark配置解密SSL wireshark解析ssl_wireshark配置解密SSL_06

图6.服务器端证书错误的通信捕包

wireshark配置解密SSL wireshark解析ssl_封包_07

图7.通信错误的SSL层信息解析

wireshark配置解密SSL wireshark解析ssl_ssl_08

图8.客户端证书错误的通信捕包

 调试过程中经常遇到的就是证书错误。图6和图7显示了,通信过程中客户端向服务器回复了bad certificate的包然后中断通信。此时应检查服务器端的包的格式是否符合要求,是否为过期证书或自签名证书等不合法的证书。图8显示客户端证书错误,此时应查证客户端的系统时间,证书合法性等问题。