首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 8.4 CFNetwork SSLHandshake失败(-9850)

iOS 8.4 CFNetwork SSLHandshake失败(-9850)
EN

Stack Overflow用户
提问于 2015-07-03 13:45:36
回答 3查看 1.6K关注 0票数 3

自从我将xcode更新为6.4 (仿真器到ios 8.4)后,我的ssl握手代码就失败了。

错误是: CFNetwork SSLHandshake失败(-9850)

同样的代码可以在ios 8.3模拟器上成功地执行ssl握手(我还尝试过xcode 6.4中的IOS8.3模拟器,它的握手效果很好)。

这是一段代码,它编码并开始握手。我在用斯威夫特。

代码语言:javascript
复制
self.socket.startTLS([kCFStreamSSLLevel:kCFStreamSocketSecurityLevelTLSv1,
        kCFStreamSSLValidatesCertificateChain:kCFBooleanFalse])

我一整天都在努力弄清楚这一点,甚至找不到错误代码-9850的含义。它没有与SecureTransport.h文件中的所有其他代码一起列出。

Update1:

我发现苹果引入了应用程序传输安全性,这意味着你可以声明你想要建立安全连接的域。不管怎样,我试过使用自动测试系统,但没有成功。-9850错误仍在制造问题。

更新2-解决方案

正如Michal和Steven在他们的回答中所建议的那样,我开始怀疑主要的问题是在服务器端,这最终是正确的。

我和实现服务器的家伙谈过,在他生成了长度为2048的新ssl证书之后,所有的问题都消失了。在此之前,他们只有512岁。

有了新的证书,我这边的代码就可以正常工作了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-06 14:36:27

-9850出现在埋在SecureTransport.h 9 SDK中的iOS头中:

代码语言:javascript
复制
errSSLWeakPeerEphemeralDHKey = -9850,       /* weak ephemeral dh key  */

听起来米哈尔是在正确的轨道上。对这个问题进行了更广泛的搜索,我找到了钥匙

从Chrome 45开始,如果SSL/TLS握手试图使用小于1024位的公钥来实现短暂的Diffie-Hellman密钥协议,则会触发此错误消息。

我并不是说iOS 9的要求与Chrome完全相同,但我会开始研究服务器配置,如果您能够增加它用于SSL握手的密钥大小的话。

票数 1
EN

Stack Overflow用户

发布于 2015-07-06 14:08:56

我相信这和coreTLS有关

描述: coreTLS接受短时Diffie-Hellman ( DH )密钥,用于出口强度短暂的DH密码套件.这一问题,也被称为Logjam,允许具有特权网络位置的攻击者将安全级别降低到512位DH,如果服务器支持导出强度的临时DH密码套件的话。解决这个问题的方法是将DH临时密钥的默认最小大小提高到768位。

从您的代码中我可以看出,您使用的是GCDAsyncSocket。它是10个月前更新的,因此肯定没有反映这一问题。

票数 1
EN

Stack Overflow用户

发布于 2015-07-03 15:49:21

当我得到CFNetwork SSLHandshake failed -(*)时,它是因为我的设备连接到网络上,而不是互联网。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31208371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档