【发布时间】:2020-06-02 09:13:25
【问题描述】:
我有一个在 iOS 13.3 设备 (iPhone XR) 上运行的 iOS 应用程序,它使用 Swift NIO 传输服务启动本地 websocket 服务器,在我的应用程序内监听 127.0.0.1:9002。
我有一个自签名证书,用于在 Swift NIO 中设置 TLS 选项。此证书符合 Apple 在此处指定的要求:Requirements for trusted certificates in iOS 13 and macOS 10.15。根 CA 在我的设备上受到明确信任,并且也符合要求。
在我的应用程序中,我加载了一个显示网站的 WKWebView:https://www.websocket.org/echo.html。
当我尝试连接到:wss://127.0.0.1:9002 时,我总是遇到同样的错误:
WebSocket 网络错误:操作无法完成。 (OSStatus 错误 -9807。)
在安全框架中代表什么:
errSSLXCertChainInvalid
我想指出,当我在没有 TLS 的情况下尝试相同的步骤时,一切正常。
知道我的证书做错了什么吗?几天以来,我一直在为此苦苦挣扎。 谢谢。
编辑:我找到了问题的原因,我忘记在服务器端添加完整正确的证书链,因此客户端无法正确验证服务器的身份,因为我有只有服务器证书,而不是整个证书链,包括中间证书和根 CA。
【问题讨论】:
-
能否添加读取CA证书和连接服务器的代码?
-
问题解决了吗?我也有类似情况
-
我做了,我忘了编辑我的问题,我要做什么。问题很简单。事实上,我忘记在服务器端添加完整正确的证书链,因此客户端无法正确验证服务器的身份......
标签: ios swift ssl websocket tls1.2