一、环境及其他

本篇是接很早之前写的一篇 《使用ssldump解密https数据包》,当时在 F5 上测试成功后,在外部搭建了一个https的web应用,再使用私钥解包时,发现只能看到握手包,看不到实际解包后的东西。刚好最近有网友在咨询该问题,就又空下心思再研究了下该问题。这里记录下最终解决的方法。

这里先看下最终实现的效果:

ssldump-https
ssldump-https

测试环境:

https web服务器:centos7主机一台   192.168.1.130

解包使用的测试主机:kail 主机一台(默认装有ssldump,懒得装ssldump工具了) 192.168.1.129

二、问题解决思路

解密的关键在于两点:

  1. ssldump解的包,只支持rsa认证,不支持DHE和ECDHE加密算法。不知道这些概念的,可以自行搜索;
  2. 私钥格式,不得是同时包含公钥和私钥的pem文件,而是仅包含私钥的文件。

1、解决加密算法的问题

这里以firefox为例,在地址栏输入about:config,并搜索security.ssl3.dhe和security.ssl3.ecdhe,将这两项开头的项会部设为 false 。具体如下:

rsa-dhe-ssl
rsa-dhe-ssl

同样,如果是java 程序,也可以在程序启动时,通过如下参数指定不使用dhe和ecdhe,如下:

1jdk.TLS.disabledALGORITHMS=DHE, ECDHE

2、私钥格式问题

纯私钥是以BEGIN RSA PRIVATE KEY开头,以END RSA PRIVATE KEY,而pem格式的因为同时包含公钥和私钥,所以格式会不一样。

1[root@localhost ~]# cat /etc/pki/tls/private/localhost.key
2-----BEGIN RSA PRIVATE KEY-----
3MIIEowIBAAKCAQEAtLWebSiZ7xtITe0x+PThrJQmcgXWtXG06hPtoxUV
4Wdrcfh4bj/8T4Rq3xomjpRbOjKQPl6c4CbqbMg/IoYLf5vXQF9waLO8Ur0
5…………
6-----END RSA PRIVATE KEY-----

以上两个问题解决后,就好测试了。

三、解包测试

这里https web server端比较好弄,直接yum -y install http mod_ssl 安装完成后,默认启动时是支持https的,也不用再生成公钥和私钥。具体可以查看/etc/httpd/conf.d/ssl.conf配置,会看到如下项:

1SSLCertificateFile /etc/pki/tls/certs/localhost.crt
2SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

其中localhost.key项就是私钥配置,将该文件拷贝到kail主机上,通过ssldump先启动抓包过程,如下:

1ssldump –k /path/to/key_file.key –i ‘interface’ –dXnq ‘expression’
2ssldump –k /etc/stealmykeys/test.key –i eth0 –dXnq host 10.11.12.50

使用到的参数意义如下:

  • -k specifies the location of the key file to be used (also use -p password if its password protected0
  • -i specifies the capture interface
  • -d displays the application data
  • -X display the application data in ASCII as well as Hex
  • -n disabled host and port name resolution
  • -q minimises information about the SSL/TLS session; if you need to debug the session itself obviously remove this (and the -d and -X parameters)
  • ‘expression’ is a filter expression, see my tcpdump Expressions Masterclass for more detail on the subject if you need it

在kail主机上,打开firefox,通过https://192.168.1.130打开后,ssldump最终实现效果就是最初上的图那样。