ios - SSL 握手仅在 IOS 上失败

标签 ios iphone cordova ssl websocket

我正在使用 cordova (5.2.0) 开发应用程序。 在 mac 上,我使用 Xcode 6.4 生成 .ipa

在某些时候,我在 js 中像这样初始化一个安全的 websocket 连接(证书不是自签名的,长度为 2048):

socket_ip = new WebSocket(wss://perform.domain.com:8080, "image-processing-protocol");

该连接适用于 Android 以及桌面浏览器(也适用于 safari)。

但是,从我的 Iphone(8.4) 我得到了一个:

CFNetwork SSLHandshake failed (-9807) which means "Invalid certificate chain"

在服务器端,我收到的消息是:

error:00000005:lib(0):func(0):DH

我的服务器配置是:

  • info.ssl_cert_filepath = "sslCertificates/myCert.cer";
  • info.ssl_private_key_filepath ="sslCertificates/myCert";
  • info.ssl_ca_filepath ="sslCertificates/GlobalSignRootCA.cer"
  • info.ssl_cipher_list ="RC4-SHA:AES128-SHA:HIGH:!aNULL:!MD5"

看起来我的问题类似于 openssl-ssl-accept-error-5 .然后我尝试设置一个没有 DH 的密码列表,但我仍然遇到错误。 我可能缺少要在我的 libsocket 服务器上配置的东西。

只要我使用的是商业证书并且它可以与其他设备一起使用,我不明白与 IOS 的连接失败。

非常感谢任何帮助,谢谢!

最佳答案

您是否还必须添加来自 GlobalSignRootCA 的中间证书?

关于ios - SSL 握手仅在 IOS 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37458513/

相关文章:

ios - 是否可以下拉刷新并在 uicollectionview 的自定义集合单元格中加载更多内容?

ios - 如何使按钮在按住时不断调用函数(SpriteKit)

ios - Everyplay 是否支持多个渲染 channel ? (iOS)

iphone - 什么是 NSZone?使用initWithZone :?有什么好处

iphone - 非公共(public)选择器 "availableDiskSpace"?

cordova - 添加滚动到顶部按钮(Ionic 2 | Typescript)

ios - 具有自定义形状导航栏的 UINavigationController

iphone - 检查 iOS 应用程序的长期内存使用情况

android - 在 Android 4.1 到 5.0 的 Cordova 应用程序上启用 TLS 1.2

javascript - AppGyver - PhoneGap 删除加载过渡屏幕