【问题标题】:SSL handshake fail on IOS onlySSL 握手仅在 IOS 上失败
【发布时间】:2016-09-24 07:40:24
【问题描述】:

我正在使用 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) 这意味着“无效的证书链”

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

错误: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 的连接失败。

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 对照SSLLabs检查您的网站并寻找“不完整链”。如果您发现它修复您的服务器配置。一些桌面浏览器可以解决此类服务器设置问题,而大多数其他 ssl 客户端则不能。

标签: ios iphone cordova ssl websocket


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我按照 Steffen 的建议进行了检查。 解决方案是在libwebsocket中设置椭圆曲线Diffie Hellman协议。

    感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 2013-03-23
      • 2018-07-28
      • 1970-01-01
      • 2017-03-24
      • 2012-10-11
      • 2015-03-16
      • 2021-12-28
      • 2018-10-17
      相关资源
      最近更新 更多