安卓微信连接fiddler等抓包工具无法抓取https
问题描述:
在手机连接pc的fiddler后,安卓微信打不开https页面,安卓的浏览器、qq等都可以正常访问https,ios也都可以,就只有安卓微信放问https是空白页面
解决思路:
一. 证书没有正确安装
连接抓包工具无法访问https的,首先判断是证书问题。在浏览器访问 10.0.0.99: ,点击最下面的证书进行安装
安装好证书后,发现仍然访问不了。
重新整理思路,安卓浏览器和qq等都可以正常访问https说明证书配置是正确的。唯独在微信访问异常,在百度后查到有其他人遇到类似的问题,说是证书链不完整,导致浏览器无法信任你安装的证书。
证书链其实就是描述证书的签名环节,就比如是 A 颁发证书给 B ,B颁发证书给C,然后我们手里的就是 证书C。当证书链不完整的情况下,也就是没有描述我们手中的证书C是由谁办法的,所以导致的浏览器不认为你这个证书是可信的授权证书。
二. 如何验证证书链是否完整?
1. 如果是外网,可以访问 https://www.geocerts.com/ssl-checker,输入域名进行验证SSL证书链是否完整
2. 如果是内网,则可以使用命令验证:
openssl s_client -connect x.x.x.x: // s_client为一个SSL/TLS客户端程序,与s_server对应,它不仅能与s_server进行通信,也能与任何使用ssl协议的其他服务程序进行通信。
// -connect host:port:设置服务器地址和端口号。如果没有设置,则默认为本地主机以及端口号4433。
连接内网的IP后:
其中0、1是证书链中每一级证书的序号。0是要被验证的网站所用的证书。其CN对应网站域名。
每一个序号后面,s 开头的一行是指证书,i 开头的一行是指此证书由谁签发。
0 的CN包含一个英文域名 static.xxx.com 。它的签发者是 TrustAsia Technologies, Inc./OU=Symantec Trust Network/OU=Domain Validated SSL/CN=TrustAsia DV SSL CA
1 的证书就是0的签发者。而1自己又是由另一个证书 VeriSign Class Public Primary Certification Authority 签发的。
所以这么一级级看下来,浏览器认为,1的签发者我认识,安装包里有提到,VeriSIign嘛。签名正确、验证无误,所以信任1。那么也应该信任1签发的0。所以这个网站可以信任。
然而,如果网站配置时,在crt文件中只包含了自己,而没包含一个完整到可以被浏览器内置数据验证的证书链,就有可能被浏览器拒绝。比如
openssl s_client -connecttouko.moe: --- Certificate chain s:/CN=touko.moe i:/C=CN/O=WoSign CALimited/CN=WoSign CA Free SSL CertificateG2 ---
只有0一组。说明s行中的touko.moe由 i 行中的WoSign CA Free SSL CertificateG2签发。没了。
这就是此坑最神奇之处:浏览器此时是否验证失败,是不一定的。有2种情况:
A、浏览器自安装以来,从未见过这个i。那么验证会失败。
B、浏览器以前见过、并且验证过i,那么验证会成功。
通常管理员自己会去证书发行商的https网站买证书,浏览器就会验证,然后将验证成功的中间证书全都缓存下来,为以后节省时间。当管理员(错误地)配置完自己的网站,去浏览测试的时候,完全不会遇到问题。因为他的浏览器已经认识这个中间证书了。
总结:
通过证书链验证发现,我们内网的证书链是完整无误的。
三. 微信自己的问题
再次整理思路,用安卓微信访问其他的https网站比如百度、csdn等都是空白页,如果是我们的证书链问题,那其他网站的证书链是应该没问题的,为什么也访问不了?所以证书链问题完全排除掉。
那既然不是本地证书问题,也不是我们服务端证书链问题,qq、浏览器又都能正常访问,ios也正常,说明fiddler端是没问题的,这个时候怀疑是不是微信自己的问题?
OK,那首先考虑为什么fiddler可以抓取https的包呢?
fiddler巧妙就巧妙在伪造CA证书的地方了,我(fiddler)自己编造一个私钥和公钥,作为签名凭证发送给浏览器,提交到服务端,服务端根据公钥签名返回,我(fiddler)伪造的密钥,自然就能解开了。
所以,你知道,我知道,大家都知道,为了防止软件被fiddler抓包,开发者会内置SSL证书,直接通过自己的证书签名加密,而不去采用系统的CA证书,这样就不会被伪造的证书来骗取信息,自然而然,fiddler就没办法抓到这些自带证书的软件数据了。
而微信极有可能自带https证书验证,没有使用所以fiddler没办法抓到微信内https网页的信息。
而之前的微信是可以正常抓取https的,今天却突然不行,想到前两天微信刚刚升级到了7.0,会不会是新版新增的限制呢?
于是找来安卓6.7.3的微信进行验证,发现时正常的,只有最新版7.0不行。
经过上面一系列的验证,大概可以猜测,是因为安卓的微信7.0版本值信任自己内置的ssl证书,不信任用户自己安装的证书,导致抓包工具抓取https页面时,访问空白!
解决方案:
在官方没出来新的调试工具和方法之前,使用http或者低版本微信进行调试
-----------------------------------------
参考文章:
https://www.dadiaoge.com/fiddler-wechat-https.html
https://blog.csdn.net/u014145985/article/details/80997023
https://blog.csdn.net/qq_24033949/article/details/52891146
安卓微信连接fiddler等抓包工具无法抓取https的更多相关文章
- 使用抓包工具将抓到的接口存放Jmeter中
1. jmeter工作台新增 HTTP代理服务器.端口设置为:8888 2. 抓包工具上面设置代理服务器地址 3.代理服务器未启动时,抓包工具界面显示无法联网. 4.在Jmeter中点击[启动]HTT ...
- CentOS 安装抓包工具wireshark-tshark抓包工具
原文出处:razeen -> https://razeen.me/post/how-to-install-tshark-on-centos.html 准备在服务器上用tshark抓包,分析一下数 ...
- Fiddler抓包工具安装与使用
1.Fiddler简介2.Fiddler安装步骤3.Fiddler目录结构4.Fiddler证书配置5.Fiddler录制配置6.Fiddler工作原理7.Fiddler界面详解 1.Fiddler简 ...
- 抓包工具fiddler
具体的可以看这个链接,后来补充了些东西,cnblog复制图片太麻烦了 http://note.youdao.com/yws/public/redirect/share?id=37f8556270b44 ...
- Fiddler抓包工具使用记录
前言 Fiddler是一款强大的Web调试代理工具,又称抓包软件,本文记录如何使用Flidder进行抓包 Fiddler官网:https://www.telerik.com/fiddler 下载安装 ...
- linux下的抓包工具tcpdump
1.由netstat查看网络情况,引出的TCP建立连接.终止连接过程,以及TCP状态分析: 2.Soap=XML+HTTP引出的HTTP协议分析: 3.Soap(Simple Object Acces ...
- 为什么用抓包工具看HTTPS包是明文的
测试或者开发调试的过程中,经常会进行抓包分析,并且装上抓包工具的证书就能抓取 HTTPS 的数据包并显示.由此就产生了一个疑问,为什么抓包工具装上证书后就能抓到 HTTPS 的包并显示呢?不是说 HT ...
- postman 抓包工具charles的使用
1.直接打开charles,然后,如果有https的话,需要安装证书,然后,设置代理 2.如果不是https的,不需要设置代理,直接抓取就可以 先安装证书: 然后设置代理: ...
- Android利用Fiddler进行网络数据抓包,手机抓包工具汇总
Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...
随机推荐
- iOS----------UITextField实现过滤选中状态拼音
2018年上班的第二天,就这样背了一个大锅.我们项目中有一个搜索功能,在这一期的版本中,为了增强优化,去除了过滤空格的请求,这样或许能增加很好的用户体验,恰恰相反,偷鸡不成蚀把米.没想到苹果系统的输入 ...
- 配置ADB到Windows环境变量
adb 命令可以帮我们快速的管理连接的手机设备,例如执行一些安装apk,卸载apk命令,对于熟悉linux系统的人,可以方便的管理手机目录操作手机文件,还可以通过adb命令查看手机的系统日志等操作. ...
- Android下实现一个简单的计算器源码
下面的内容是关于Android下实现一个简单的计算器的内容. import android.app.Activity; import android.os.Bundle;import android. ...
- Network Policy - 每天5分钟玩转 Docker 容器技术(171)
Network Policy 是 Kubernetes 的一种资源.Network Policy 通过 Label 选择 Pod,并指定其他 Pod 或外界如何与这些 Pod 通信. 默认情况下,所有 ...
- c/c++ 重载运算符 ==和!=的重载
重载运算符 ==和!=的重载 问题:假如有一个类似于vector的类,这个类只能存放string,当有2个这个类的对象时,如何比较这2个对象. 自己重载==和!= 代码(重载==,!=) #inclu ...
- 南邮攻防训练平台逆向第四题WxyVM
下载文件elf文件,运行输入flag,用ida打开逆向算法: 不是很复杂,可以看出flag长度需要24,最终会和已给出dword_601060进行比较,一致则成功,那么现在只需要看上面的sub_400 ...
- C# -- 使用委托 delegate 执行异步操作
C# -- 使用委托 delegate 执行异步操作 委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似. 与 C 中的函数指针不同,委托是面向对象的.类型安全的和保险的. 委托的 ...
- Enterprise architect 类图加时序图
原文地址:https://segmentfault.com/a/1190000005639047#articleHeader2 新建一个Project 没什么好说的,“文件-新建项目”,然后选择保存位 ...
- 勇者斗恶龙 uva 11292(简单贪心)
思路:先将龙和士兵进行分别排序从小到大.然后,每次找当前最小龙的第一个大于它的骑手之后退出,开始下一个龙,重复上一次操作. #include<iostream> #include<a ...
- WebApi的版本控制
using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; using Sy ...