我在Fiddler4选项中启用了HTTPS,它可以捕获我机器上大多数Android应用程序的HTTPS通信(使用Android模拟器,通过WIFI代理设置)。
但对于某些应用程序,它总是失败。例如Kayak。 它总是说“糟糕!连接到互联网时出现问题。请稍后再试。”。
我注意到Kayak App使用TLS 1.0(参见下面的屏幕截图,它来自Microsoft Network Monitor 3.4),我想这可能与它有关。
我还尝试将协议设置为“tls1.0”(参见下面的屏幕截图),但没有效果。
欣赏你的想法。
答案 0 :(得分:3)
更新进一步调查显示,如果该字段编码为SubjectCN
,某些Android应用程序将不接受证书“BMPString
字段中的通配符。 makecert
生成器使用BMPString
,因此您可以取消选中Use wildcards
框或切换到工具>中的CertEnroll
生成器。提琴手选项> HTTPS>证书生成者。
以下文字仍适用于实施固定的应用。
TLS1.0
可能是Fiddler中最受支持的HTTPS协议。如果发生故障,您还没有显示Fiddler的Web Sessions
列表或Log
标签中的内容,但我的猜测是Web会话列表可能只显示CONNECT
和{{{ 1}}标签有类似的内容:
Log
这是对的吗?如果是这样,最可能的解释是相关的Android应用已启用 certificate pinning。
来自Fiddler book:
证书固定
极少数HTTPS客户端应用程序支持该功能 客户端应用程序称为“证书固定” 硬编码只接受一个特定证书。即使是 connection使用链接到root的证书 完全受操作系统信任,此类应用程序将拒绝 接受意外的证书。
迄今为止,一些Twitter和 Dropbox应用程序包含此功能,Windows 8 Metro应用程序可能会选择加入 需要特定证书而不是依赖于 系统的受信任的根存储。 Firefox的自动浏览器更新 当Fiddler解密其流量时,功能将无声地失败。该 名为EMET的Microsoft Security工具包可以在任何版本中启用固定 申请某些“高价值”网站(包括Windows Live)。 Chrome浏览器支持固定,但它可以免除本地信任 像Fiddler的根。
当证书固定应用程序执行时 HTTPS握手通过CONNECT隧道到Fiddler,它将进行检查 响应证书并拒绝发送任何进一步的请求 当它发现Fiddler生成的证书时。不幸, 解决这个问题没有通用的解决方法;最好的你 可以做的是免除该应用程序的流量来解密 HTTPS选项卡或通过设置x-no-decrypt会话标志 连接隧道。该标志将阻止Fiddler解密 在隧道中的交通,它将不间断地流经Fiddler。
极少数HTTPS客户端应用程序支持该功能 客户端应用程序称为“证书固定” 硬编码只接受一个特定证书。即使是 connection使用链接到root的证书 完全受操作系统信任,此类应用程序将拒绝 接受意外的证书。到目前为止,一些Twitter和 Dropbox应用程序包含此功能,Windows 8 Metro应用程序可能会选择加入 需要特定证书而不是依赖于 系统的受信任的根存储。 Firefox的自动浏览器更新 当Fiddler解密其流量时,功能将无声地失败。该 名为EMET的Microsoft Security工具包可以在任何版本中启用固定 申请某些“高价值”网站(包括Windows Live)。 Chrome浏览器支持固定,但它可以免除本地信任 像Fiddler的根。当证书固定应用程序执行时 HTTPS握手通过CONNECT隧道到Fiddler,它将进行检查 响应证书并拒绝发送任何进一步的请求 当它发现Fiddler生成的证书时。
不幸的是, 解决这个问题没有通用的解决方法;最好的你 可以做的是免除该应用程序的流量来解密 HTTPS选项卡或通过设置
!SecureClientPipeDirect failed: System.IO.IOException Authentication failed because the remote party has closed the transport stream. for pipe (CN=*.kayak.com, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com)
会话标志x-no-decrypt
隧道。该标志将阻止Fiddler解密 在隧道中的交通,它将不间断地流经Fiddler。
如果你非常认真地规避钉扎,你可以越狱设备并使用任何一些第三方工具包来禁用钉扎代码。