问题描述:

在手机连接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. 【AO笔记】Addins的Toolbar 添加一条分割线

    在XAML中,给Item标签添加separator属性,需要从哪里打分割线,就将其设置为true即可.如下图所示: 如紫色框住的灰色竖线所示. 默认separator属性是false的,这个小东西极其 ...

  2. 用webpack打包加密静态配置文件

    webpack处理静态文件,如json.xml等配置文件,可以采用 copy-webpack-plugin 插件直接复制到打包后的文件夹下,但如果想采用一些手段隐藏一下这些配置文件的内容怎么办呢? 虽 ...

  3. 从 RAID 到 Hadoop Hdfs 『大数据存储的进化史』

    我们都知道现在大数据存储用的基本都是 Hadoop Hdfs ,但在 Hadoop 诞生之前,我们都是如何存储大量数据的呢?这次我们不聊技术架构什么的,而是从技术演化的角度来看看 Hadoop Hdf ...

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

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

  5. 【原】Java学习笔记016 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // this 关键字 ...

  6. MFC拖拽、选择目录、遍历文件

    1.选择目录 void CDecryptFileDlg::OnBnClickedSel() { std::wstring selectedDir; WCHAR szDir[MAX_PATH]; Zer ...

  7. mas录屏,带系统声音和麦克风声音

    自带的QuickTime + Soundflower 可完美解决,同时录系统的声音和mic声音,也可以只录系统声音. 安装Soundflower 在应用程序 -> 实用工具,里面找到“音频 MI ...

  8. ElasticSearch(八):elasticsearch.yml配置说明

    集群名称:cluster.name: my-application确保在不同的环境中的集群的名称不重复,否则,节点可能会连接到错误的集群上 节点名称:node.name: node-1默认情况下,当节 ...

  9. SpringBoot实战(八)之RabbitMQ

    什么是RabbitMQ? RabbitMQ 是一个消息代理.它的核心原理非常简单:接收和发送消息.你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处.在这个比喻中,Rabb ...

  10. Raft与MongoDB复制集协议比较

    在一文搞懂raft算法一文中,从raft论文出发,详细介绍了raft的工作流程以及对特殊情况的处理.但算法.协议这种偏抽象的东西,仅仅看论文还是比较难以掌握的,需要看看在工业界的具体实现.本文关注Mo ...