使用SWIFT-NIO-SSL的TLS CA证书SSL固定

时间:2020-04-05 20:03:29

标签: swift ssl ca swift-nio

我一直在尝试使用SWIFT-NIO-SSL通过CA证书和服务器证书连接到服务器。

在尝试了数字并尝试了不同的方法之后,我找不到解决方案。在使用带有swift-nio-ssl的ca证书的TLS连接到TLS方面是否有任何教程或帮助会有用。

1 个答案:

答案 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来实现它,但是在实践中,这可能很难,具体取决于您打算如何固定。

如果您提供更多详细信息,您想真正实现什么,我很乐意对此进行扩展。

相关问题