问题描述:

在手机连接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的更多相关文章

  1. 使用抓包工具将抓到的接口存放Jmeter中

    1. jmeter工作台新增 HTTP代理服务器.端口设置为:8888 2. 抓包工具上面设置代理服务器地址 3.代理服务器未启动时,抓包工具界面显示无法联网. 4.在Jmeter中点击[启动]HTT ...

  2. CentOS 安装抓包工具wireshark-tshark抓包工具

    原文出处:razeen -> https://razeen.me/post/how-to-install-tshark-on-centos.html 准备在服务器上用tshark抓包,分析一下数 ...

  3. Fiddler抓包工具安装与使用

    1.Fiddler简介2.Fiddler安装步骤3.Fiddler目录结构4.Fiddler证书配置5.Fiddler录制配置6.Fiddler工作原理7.Fiddler界面详解 1.Fiddler简 ...

  4. 抓包工具fiddler

    具体的可以看这个链接,后来补充了些东西,cnblog复制图片太麻烦了 http://note.youdao.com/yws/public/redirect/share?id=37f8556270b44 ...

  5. Fiddler抓包工具使用记录

    前言 Fiddler是一款强大的Web调试代理工具,又称抓包软件,本文记录如何使用Flidder进行抓包 Fiddler官网:https://www.telerik.com/fiddler 下载安装 ...

  6. linux下的抓包工具tcpdump

    1.由netstat查看网络情况,引出的TCP建立连接.终止连接过程,以及TCP状态分析: 2.Soap=XML+HTTP引出的HTTP协议分析: 3.Soap(Simple Object Acces ...

  7. 为什么用抓包工具看HTTPS包是明文的

    测试或者开发调试的过程中,经常会进行抓包分析,并且装上抓包工具的证书就能抓取 HTTPS 的数据包并显示.由此就产生了一个疑问,为什么抓包工具装上证书后就能抓到 HTTPS 的包并显示呢?不是说 HT ...

  8. postman 抓包工具charles的使用

    1.直接打开charles,然后,如果有https的话,需要安装证书,然后,设置代理 2.如果不是https的,不需要设置代理,直接抓取就可以 先安装证书: 然后设置代理:               ...

  9. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

随机推荐

  1. Snapde怎么添加行和列

    Snapde,一个专门为编辑超大型数据量CSV文件而设计的单机版电子表格软件:它运行的速度非常快,反应非常灵敏.那么它是如何添加行列的呢? 它有三种方法可以添加: 1.在编辑下拉菜单下找到设置行列数菜 ...

  2. ServiceHub.DataWarehouseHost.exe内存泄漏问题的处理

    Visual Studio 2017的15.2版本在debug应用程序时,ServiceHub.DataWarehouseHost.exe会出现严重的内存泄漏的问题,一个小时左右,内存耗了将近8GB. ...

  3. 微信小程序(二)登录授权实现

    相对于上一节,这一节主要是动态获取数据,主要是对登陆信息的接收,以及页面获取授权按钮的相对相应(未授权时,显示,授权后不显示) 关键在于状态值的判断,以及对页面的不同响应(m-->v) wxml ...

  4. java使用synchronized与Semaphore解决生产者消费者问题对比

    一.synchronized与信号量Semaphore简介 1.synchronized是java中的关键字,是用来控制线程同步的问题最常用的方法. 2.Semaphore是属于java的一个类,同样 ...

  5. Left Jion等价SQL猜想验证

    猜想:以下两条SQL等价 select * from A left join B on A.ID=B.BID and B.BName=N'小明' select * from A left join ( ...

  6. AngularJS学习之旅—AngularJS SQL(十二)

    一.使用 PHP 从 MySQL 中获取数据 <div ng-app="myApp" ng-controller="customersCtrl"> ...

  7. Swift4.0 从相册中获取图片和拍照

    第一步 添加协议 UIImagePickerControllerDelegate,UINavigationControllerDelegate   第二步 添加选择方式 let sexActionSh ...

  8. Java文件下载:如何编码文件名称以及如何设置HttpServletResponse

    在下载文件时,经常遇到文件名乱码等问题. 本文说明如何编码文件名,以及如何设置HttpServletResponse对象. 1,如何编码文件名 String userAgent = request.g ...

  9. 消息 4900,级别 16,状态 2,第 1 行 对表 'XX.XXX' 执行 ALTER TABLE SWITCH 语句失败。对于已启用更改跟踪的表,不可能切换其分区。请先禁用更改跟踪,再使用 ALTER TABLE SWITCH。

    问题描述: 今天处理切换分区数据的时候出现了这个错误: 消息 4900,级别 16,状态 2,第 1 行 对表 'XX.XXX' 执行 ALTER TABLE SWITCH 语句失败.对于已启用更改跟 ...

  10. 使用docker swarm集群心得

    本片关于使用docker swarm 集群心得,也是一些经验吧!过程描述可能简单! 根据一些公司使用经历接收一下问题并针对问题作出应对策略 1.docker swarm集群 主节点数必须是单数,也就是 ...