-
概述
在SSL/TLS通信调试的过程中,用wireshark捕获的SSL/TLS通信的应用层报文是密文(见图1,协议类型只能解析到TCP),无法直接进行分析,此时我们需要掌握如何通过wireshark解密SSL/TLS报文、利用wireshark网络协议解析器,分析通信过程中的问题。
图1.通讯过程中SSL加密报文
-
前置要求
基本知识
- 网络跟踪: Wireshark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。通信过程中通过捕获网络封包后的分析来跟踪需要的网络信息。
- TCP/ IP和SSL/ TLS协议:TLS与SSL在传输层对网络连接进行加密。
- 证书和公钥和私钥的使用:SSL通信过程中必备元素。
- Wireshark的网络协议解析器:捕包过程中针对固定的协议的自动解析功能
支持SSL解密的Wireshark版本:截图所用wireshark版本为Version 1.12.0
密钥格式为RSA格式
- 设置步骤
有私钥,wireshark即可自动在抓包过程中解开SSL通信报文,设置步骤: - 打开wireshark,捕包。
- 选择Edit>Preferences
图2.偏好设置
- 选择Preferences里的Protocols
图3.选择协议
- 下滚选择SSL(协议)
图3.选择协议SSL
5. 在RSA keys list中,提供,,,<key_file_name>
是服务器的IP地址
是服务器监听的端口
是ssl(小写,大写不被识别)
<key_file_name>是私钥放置的位置
图4.编辑RSA key列表
图4.添加RSA key列表信息
6.设置完成后选择OK即可解密SSL应用报文
图5.ssl解密捕包信息
从图5中我们可以清晰的看到服务器与终端的SSL通信过程,握手->交换证书->协商密钥->应用数据传输。
4. 问题定位
图6.服务器端证书错误的通信捕包
图7.通信错误的SSL层信息解析
图8.客户端证书错误的通信捕包
调试过程中经常遇到的就是证书错误。图6和图7显示了,通信过程中客户端向服务器回复了bad certificate的包然后中断通信。此时应检查服务器端的包的格式是否符合要求,是否为过期证书或自签名证书等不合法的证书。图8显示客户端证书错误,此时应查证客户端的系统时间,证书合法性等问题。