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

问题描述 投票:0回答:3

我正在使用 Charles Proxy 来查看来自我的 iPhone 的所有流量。我的 iPhone 上安装了 ssl 证书/配置文件,我可以看到很多经过 ssl 加密的流量。然而,某些应用程序似乎没有完成 ssl 握手。

错误是:“SSLHandshake:远程主机在握手期间关闭了连接”,然后 Charles 代理建议将应用程序配置为信任 Charles 根证书。我以为当我将配置文件安装到我的 iPhone 上时我就这么做了?

对此有任何解释/修复方法吗?

ios iphone ssl proxy reverse-engineering
3个回答
197
投票

是的,SSL 固定是可能的。尽管从 iOS 10.3 开始,您必须采取额外的步骤来信任 Charles 根证书 当前未在其网站上记录 编辑:此信息现在位于此处的 iOS 设备下:https://www.charlesproxy.com /文档/using-charles/ssl-证书/

Settings > General > About > Certificate Trust Testings

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


41
投票

有些应用程序并不只是期望系统上受信任的 CA 之一签署的证书,而是期望单个特定证书或包含特定公钥的证书。这称为证书/公钥固定。对于此应用程序,如果您将 Charles 代理的 CA 配置为系统上受信任的 CA,它将无法工作,因为它们不会使用此 CA。

对此有任何解释/修复方法吗?

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


0
投票

转到 charles 中的帮助 -> SSL 代理 -> 重置 Charles 根证书

然后在设备上的浏览器中打开 https://chls.pro/ssl > 下载最新证书配置文件 > 转到您的设备 > 在设备上安装最新证书 > 关于 - 信任证书

确保您的查尔斯根证书是最新的并且不应过期

© www.soinside.com 2019 - 2024. All rights reserved.