wake-up-neo.com

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

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

错误为:“ SSLHandshake:握手期间远程主机关闭了连接”,然后Charles Proxy建议将应用程序配置为信任Charles Root证书。我以为我将配置文件安装到iPhone上时做了吗?

关于此问题/解决方法的任何解释吗?

44
Grant Brown

有些应用程序不仅仅期望证书在系统上签署了受信任的CA之一,还期望单个特定证书或包含特定公共密钥的证书。这称为证书/公钥固定。对于此应用程序,如果将Charles Proxy的CA配置为在系统上受信任,则将无法使用,因为它们将不会使用此CA。

关于此问题/解决方法的任何解释吗?

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

31
Steffen Ullrich

是的,可以使用SSL固定。尽管从iOS 10.3开始,您必须采取其他措施来信任尚未在其网站上记录的查尔斯根证书:

Settings > General > About > Certificate Trust Testings

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

170
Neil Sarkar