前言
tls可以防止第三方的窃听, 纂改, 和重放. 但通信双方, 即alice和bob是知道全部内容的. 所以说, https, 即tls是可以抓包的. 下面总结下几种常见的抓包方式.
几种查看加密流量的方式
chrome inspect
在浏览器中调试当然是抓包的一种. 浏览器本身就是alice, alice自身当然知道自己在说什么.
在chrome中按F12再切到network标签页就可以了. 很多有网页版的app, 都可以用此种方式来查看通信协议. 从变量名就可以获得很多信息了.
值得一提的是, 手机也支持此种方式调试.
SSLKEYLOGFILE
firefox, chrome都支持通过
export SSLKEYLOGFILE=$HOME/sslkeylog.log
日志格式:
https://developer.mozilla.org...
You can tell Wireshark where to find the key file via_Edit→Preferences→Protocols→SSL→(Pre)-Master-Secret log filename_.
中间人
搜索https抓包, 大部分结果都是诸如fiddler, charles的中间人抓包. 这个也是很自然地, 如果没有浏览器, 乃至对tls中两端都没有inspect能力的情况下, 中间人是唯一的可选项了.
在需要中间人抓包的情况下, 首先要信任中间人. 比如, fiddler会要求将fiddler的证书加为根证书. 能够修改代码的情况下, 也可将client_cafile作为配置项.
这里提一个非常实用的抓包方式.
反向代理
假设服务a只提供https方式, 用nginx作为服务a的反向代理. 同时提供http服务. 再抓取client到nginx的traffic.
nginx配置:
server {
listen *:80;
listen [::]:80;
server_name local.reverse.proxy.com;
location / {
proxy_pass https://www.google.com/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header Connection "";
proxy_http_version 1.1;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。