我一直在尝试使用SWIFT-NIO-SSL通过CA证书和服务器证书连接到服务器。
在尝试了数字并尝试了不同的方法之后,我找不到解决方案。在使用带有swift-nio-ssl的ca证书的TLS连接到TLS方面是否有任何教程或帮助会有用。
答案 0 :(得分:1)
我不确定100%是否是您要的,但是您是否尝试使用自定义CA连接到服务器,您可能需要以下TLSConfiguraion
:
var tlsConfiguration = TLSConfiguration.forClient()
tlsConfiguration.trustRoots = .file("/tmp/the-ca.pem") // the CA
如果要验证服务器提供的证书链,则在创建放置在管道中的NIOSSLClientHandler
时应使用NIOSSLClientHandler(context:serverHostname:customVerificationCallback:)
。最后一个参数是NIOSSLCustomVerificationCallbackack
,它可以完全覆盖BoringSSL的证书验证逻辑,它会显示远程对等方提供的整个证书链。
(即使您不直接使用NIO,而是通过另一个库(例如Vapor或AsyncHTTPClient),上述内容也没有任何意义,因为您自己没有添加NIOSSLClientHandler
。)
在这一点上,仅使用TLSConfiguration
不允许您实现证书固定。从理论上讲,您可以使用NIOSSLCustomVerificationCallbackack
来实现它,但是在实践中,这可能很难,具体取决于您打算如何固定。
如果您提供更多详细信息,您想真正实现什么,我很乐意对此进行扩展。