SSL Pinning 证书双向认证 抓包抓不到问题分析

问题背景:微信小程序按照正常流程抓包失败,会在burp中提示,部分银行app抓包连接超时,也会出来提示,现在大部分app之类的都会自签证书+应用内验证(单向认证)或当服务器启用了证书双向认证之后,除了客户端去验证服务器端的证书外,服务器也同时需要验证客户端的证书,也就是会要求客户端提供自己的证书,如果没有通过验证,则会拒绝连接,如果通过验证,服务器获得用户的公钥。(双向校验)

解决:

安卓

对于Android 7.0 (API 24) 之后,做了些改动,使得系统安全性增加了,导致:

  • APP 默认不信任用户域的证书
    • -》之前把Charles的ssl证书,安装到 受信任的凭据 -> 用户 就没用了,因为不受信任了
    • 只信任(安装到)系统域的证书

对此,总结出相关解决思路和方案:

  • (努力想办法)让系统信任Charles的ssl证书
    • 作为app的开发者自己:改自己的app的配置,允许https抓包
      • 重要提醒:前提是得到或本身有app的源码
    • 把证书放到受系统信任的系统证书中去
      • 重要提示:前提是手机已root
  • 绕开https不去校验
    • 借助于其他(JustTrustMe等)工具绕开https的校验
      • 重要提示:需要借助其他XPosed等框架配合才可以

ios

安装完证书后还需要打开信任此根证书即可单向认证的抓包,双向认证还需要在服务器端关闭服务器端的证书认证

参考链接:https://crifan.github.io/app_capture_package_tool_charles/website/how_capture_app/complex_https/https_ssl_pinning/?q=

https://juejin.cn/post/6844903831579394055#heading-14

https://www.anquanke.com/post/id/190080

https://www.secpulse.com/archives/54027.html

https://juejin.cn/post/6844903809068564493

https://se8s0n.github.io/2018/09/11/HTTP%E7%B3%BB%E5%88%97(%E4%BA%94)/

https://xz.aliyun.com/t/6551

猜你喜欢

转载自blog.csdn.net/Vdieoo/article/details/112610722