Charles 代理https请求

起因

需要调用一个https服务,获取token,再携带token调用对应系统发送报文。

在postman测试中,token可以正常获取,携带token并发送GET请求也可以正常发送请求返回数据。

但是在应用程序使用中发现GET请求始终无法调用成功,response状态码405。应用使用HttpURLConnection进行请求,后续删除部分不使用的代码后居然通了。

想深入理解https请求道理经历了什么改变,从不可用变为可用。

Wireshark拦截应用程序https请求数据

最初的想法使用wireshark监控本地网络数据,找到对应https解析后观察问题原因。

跟据TLS协议握手逻辑,在wireshark中使用正确证书、密钥等方式,将请求解析。

密钥获取方式:

  1. 通过windwsi配置环境变量SSLKEYLOGFILE,再通过chrome浏览器导出到密钥文件中,通过wireshare导入密钥文件,进行解析。

  2. 通过Fiddler代理请求,然后导出证书,再通过证书生成密钥等文件信息,导入wireshare,进行解析。

可惜2种方式都没解决掉。

搜索原因,分析为tls1.2本地与服务端协商的套件为TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,现在浏览器默认使用ECDHE的加密类型,作为套件使用,wireshare无法处理此类型https请求解析。

严重怀疑:1、直接通过Fiddler就可以解决我的需求。2、Wireshark还是没用明白。

Charles安装

主要就是以下步骤:

  1. 安装后的注册(否则30天试用)。
  2. 对于SSL代理的配置,需要把浏览器授信根证书引入程序。
  3. 设置SSL代理的域名、端口。

postman的https请求代理

开启Charles的拦截后,发送postman直接拦截成功。

观察请求头数据,一切正常加密套件确认为TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

应用程序的https请求代理

开启Charles的拦截后,应用发送请求居然没显示拦截???

查了各种资料,对Charles针对性配置,仍然无效。再对windows系统进行配置仍然无效。判断应为程序问题,程序使用HttpURLConnection发送请求,发现需要设置Proxy对象,才能成功被Charles拦截。

观察后发现HttpURLConnection存在一个坑,虽然在编写过程设置了请求为GET方式,但是通过HttpURLConnection获取了输出流,虽然没有传入任何参数,请求方式在Charles中显示为POST。

思考

  1. Charles本质为代理或者说是中间人攻击,https请求必须流经Charles才能被拦截到,例如:A -> Charles -> 计算机网络底层 -> B。
  2. HttpURLConnection发送请求的方式,网络层级应该比Charles更低。
  3. 但是postman为什么直接能被Charles拦截?是因为网络层级与Charles一致或更高么。
  4. Wireshark的所处的网络层级一定比Charles低,那是否可以通过服务器证书解析请求、响应信息呢?

总结

  1. Fiddler确实也能解决这个问题,找到的资料是通过fiddler将https代理到另一个本地服务器,解析信息。
  2. Wireshark应该可以解析浏览器发送的https请求,通过应用貌似需要程序特殊配置。
  3. HttpURLConnection发送GET请求失败,居然因为调用getOutputStream()方法后请求类型变为了POST,哪怕是没有对输出流添加任何数据。

巨人的肩膀

Charles抓取https请求及常见问题解决

charles高级篇:过滤请求、串改请求、上行下行超时、弱网

使用 RSA 密钥交换方式时,使用私钥解密 HTTPS 流量数据 (timd.cn)

使用 Key Log 解密 TLS 流量 (timd.cn)

使用 MITM 的方式,解密 HTTPS 流量 (timd.cn)

计算机网络笔记 (timd.cn)

HTTPS中间人攻击实践(原理·实践)

如何通过Wireshark查看HTTPS、HTTP/2网络包(解码TLS、SSL)

抓包工具Charles使用,中间人攻击,手机抓包 - 技术改变命运Andy - 博客园 (cnblogs.com)

清晰图解https如何防范中间人攻击_公钥密码体系防止中间人-CSDN博客

刨根问底系列之https到底是如何防篡改的?面试必备 - 掘金 (juejin.cn)

刨根问底系列之https详细握手过程 - 掘金 (juejin.cn)

posted @ 2024-05-14 08:57  疯狂马铃薯  阅读(61)  评论(0编辑  收藏  举报