为什么有些iphone应用程序无法与Charles Proxy完成ssl握手?

Gra*_*own 45 iphone ssl proxy reverse-engineering ios

我正在使用Charles Proxy来查看我的iphone发出的所有流量.我在我的iphone上安装了ssl证书/配置文件,我可以看到很多ssl加密的流量.但是,某些应用程序似乎没有完成ssl握手.

错误是:"SSLHandshake:握手期间远程主机关闭连接",然后Charles Proxy建议配置应用程序以信任Charles Root证书.当我将配置文件安装到我的iphone上时,我以为我做了什么?

有什么解释这个/解决方法吗?

Nei*_*kar 174

是的,SSL钉扎是可能的.虽然从iOS 10.3开始,您必须采取额外步骤来信任当前未在其网站上记录的Charles Root证书:

Settings > General > About > Certificate Trust Testings
Run Code Online (Sandbox Code Playgroud)

资料来源:https://www.neglectedpotential.com/2017/04/trusting-custom-root-certificates-on-ios-10-3/

  • 这应该是公认的答案! (11认同)
  • 很好的答案,非常感谢你! (6认同)
  • 他们应该将此添加到文档中 (6认同)
  • 我下载了SSL证书并安装了它.一旦我信任它,它就很有效. (3认同)
  • 谢谢!它完成了这项工作 (3认同)
  • 现在已在Charles网站上对此进行了记录:https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/ (2认同)

Ste*_*ich 32

有些应用程序不仅仅希望证书在系统上签署一个受信任的CA,而是期望单个特定证书或包含特定公钥的证书.这称为证书/公钥锁定.对于此应用程序,如果将Charles Proxy的CA配置为在系统上受信任,则它将不起作用,因为它们不会使用此CA.

有什么解释这个/解决方法吗?

如果应用程序构建为仅信任单个证书/公钥,并且永远不会因为它由本地受信任的CA签名而信任某些东西,那么您将需要原始证书及其私钥来执行SSL拦截.由于您没有这些,因此无法进行SSL拦截.