我不断得到
与客户端的 SSL 握手失败 - 远程主机终止了 握手
iOS 16.1 中的 Charles Proxy 出现错误,这应该表明证书不受信任,但我在 iPhone 设置中授予了完全信任。
以下是重现步骤:
我可以在 Charles Proxy 中看到请求,但它们都存在 SSL 握手错误。此外,iPhone 上的 Safari 会返回错误“此连接不是私有的”
有人可以解释我做错了什么吗?
这是证书信任设置的屏幕截图。
终于发现问题了。就我而言,这是一个过期的证书。为了修复它,需要转到
Help -> SSL Proxying -> Reset Charles Root Certificate...
。它将生成一个新的。然后需要安装它并授予它信任。
我没有注意到它,因为之前我只使用 Android,它不会检查证书是否过期,这与 iOS 不同。
因为我无法找到任何针对类似情况的故障排除清单,所以我将在这里提及。希望它会对某人有所帮助:
Enable SSL Proxying
中启用
Proxy -> SSL Proxying Settings...
Exclude
列表中是否不包含您尝试记录的位置。Proxy -> Record Settings
没有不需要的排除或包含Help -> SSL Proxying -> Reset Charles Root Certificate...
并重新安装证书。network_security_config.xml
中引用了
AndroidManifest.xml
更新到最新版本的 Charles(撰写本文时为 4.6.4)解决了我的问题。
如果您的问题是 iOS 设备上的证书过期,请确保在重新创建新证书后重新启动 charles 应用程序本身。
Help -> SSL Proxying -> Reset Charles Root Certificate...
Settings -> About -> Certificate Trust Settings -> Toggle new certificate on