gpt4 book ai didi

ssl - CFNetwork SSLHandshake 间歇性失败 (-9806)

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:37 25 4
gpt4 key购买 nike

我正在使用 iOS 应用程序,在 iOS 9 中测试时出现以下错误。

CFNetwork SSLHandshake failed (-9806)    
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9806)

我发现许多链接说这可能是由于 NSAppTransportSecurity 建议为我的域添加异常(exception)或禁用 ATS。但是我的服务器确实支持 TLS1.2,我只是间歇性地遇到这个问题。如果这是由于 NSTransportSecurity 引起的,我认为问题应该是一致的。奇怪的是,这并不一致。该应用程序运行良好,并且在大多数情况下能够连接到服务器。但是过了一会儿我得到了上面的错误。我使用 NSURLCONNECTION。大多数应用程序交互就像单击按钮一样,它会向服务器(tomcat)发出网络调用。一旦发生 SSL 失败错误,让应用程序成功向服务器发送请求的唯一方法是终止应用程序并重新启动。我曾尝试在问题期间将连接从 wifi 更改为 3g,甚至在问题发生后重新启动服务器,但我找不到运气。我可以正常使用 Safari 和其他应用程序。一段时间以来,我一直在努力寻找解决方案。服务器未启用前向保密。

为了深入检查问题,我验证了来自客户端的 SSL 数据包。当问题发生时,与连接正常时相比,客户端发送的密码列表不同。 Cipher list during issue

当连接正常时,我可以看到下面正在发送的密码列表。

enter image description here

还可以看出,在问题期间,客户端问候数据包显示为 SSL,而当连接良好时,客户端问候数据包显示为 TLS1.2

发行期间 enter image description here

没有问题时 enter image description here

我在整个应用程序中使用相同的 NSurlconnetion 类连接到服务器。我很困惑为什么会出现这种差异以及如何出现这种差异,以及曾经工作过的同一服务器调用以后如何不工作。以上数据是否表明在问题期间客户端正在尝试通过 tls1.0 或更低版本进行连接?服务器仅支持 TLS 1.1 和 TLS 1.2。该问题仅在 iOS 9 中发现。非常感谢任何帮助。

最佳答案

该应用程序可能从 TLS 1.2 开始,并且将提供 TLS 1.2 中的新密码(名称中带有 GCM 的密码)。然后我猜有一些握手问题,可能是由于临时服务器问题,中间的一些中间件(防火墙)或其他原因引起的。从那时起,该应用程序假定 TLS 1.2 存在问题,并将尝试使用降级连接,即 TLS 1.0。并保持这种状态,因为“它知道”TLS 1.2 将不起作用。

这种降级在浏览器中也很常见,但通常只有在至少成功一次的情况下,他们才会记得进行降级。是否可能涉及一些 SSL 拦截中间件(防火墙)导致原始 TLS 1.2 失败并降级成功? IE。问题是否仅在设备通过此中间盒连接一次然后尝试重新连接到您的站点后才会发生?

关于ssl - CFNetwork SSLHandshake 间歇性失败 (-9806),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34601581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com