首页 > 解决方案 > TLS CA 证书 SSL Pinning 使用 SWIFT-NIO-SSL

问题描述

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

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

标签: swiftsslcaswift-nio

解决方案


我不是 100% 确定这是否是您所要求的,但您是否尝试使用自定义 CA 连接到服务器,您可能需要以下内容TLSConfiguraion

var tlsConfiguration = TLSConfiguration.forClient()
tlsConfiguration.trustRoots = .file("/tmp/the-ca.pem") // the CA

如果要验证服务器提供的证书链,则应NIOSSLClientHandler(context:serverHostname:customVerificationCallback:)在创建NIOSSLClientHandler放入管道中的证书链时使用。最后一个参数是一个NIOSSLCustomVerificationCallbackack允许完全覆盖 BoringSSL 的证书验证逻辑的参数,它会呈现远程对等方提供的整个证书链。

(以防你不直接使用 NIO,而是通过另一个库,如 Vapor 或 AsyncHTTPClient,上面的内容不一定有任何意义,因为你自己没有添加NIOSSLClientHandler。)

此时,仅使用 aTLSConfiguration不允许您实现证书固定。理论上您可以使用 来实现它,NIOSSLCustomVerificationCallbackack但实际上这可能很难,具体取决于您打算如何固定。

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


推荐阅读