我已在主机上成功设置了Charles Proxy,以便在请求来自浏览器或虚拟设备上的大多数Android应用程序时,我可以查看来自我的Android虚拟设备的SSL流量。但是,我无法从一个特定应用中看到SSL流量。当该应用程序发出SSL请求时,条目中的条目显示为“SSL握手:收到致命警报:handshake_failure”
因为我可以拦截来自其他应用程序的SSL流量,所以我认为可能有问题的应用程序忽略了用户接受的根证书。这可能吗?如果是这样,它可以解决吗?
答案 0 :(得分:3)
在SSL握手期间,无效的应用可能正在使用公钥检查(AKA公钥锁定)。这是一种旨在防止中间人攻击的安全机制。我认为在中间设置代理会改变握手期间传递给客户端的证书链,这就是失败的原因。
如果您无法检查来自此应用程序的流量的原因确实是公钥固定 - 我担心没有解决方法(至少在合理的时间内没有投入)。该应用程序期待您没有的特定公钥。
更多关于公钥固定: https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning
我希望这会有所帮助。