swift - TLS CA 证书 SSL Pinning 使用 SWIFT-NIO-SSL
问题描述
我一直在尝试使用SWIFT-NIO-SSL,使用 CA 证书和服务器证书连接到服务器。
经过数字尝试并尝试了不同的方法,我找不到解决方案。是否有任何教程或任何帮助使用带有 swift-nio-ssl 的 ca 证书连接到 TLS 会有所帮助。
解决方案
我不是 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
但实际上这可能很难,具体取决于您打算如何固定。
如果您提供更多详细信息,您究竟想要实现什么,我很乐意对此进行一些扩展。
推荐阅读
- php - 如何检查名称是否已经在表中?查询 Mysql 以获取每天的总和,然后通过 PHP 用它填充 HTML 数据
- php - 如何使用 PHP Referrer-Policy 将 Firefox 推荐人设置为“无推荐人”?
- arrays - Bash 通过循环使用数组对文件内容进行操作和排序
- javascript - 在 tr 中附加 td,然后在 tbody 中
- php - XML to PHP array issue - Columns being combined into a single Row instead multiple rows
- firebase - 如何在 firebase 托管的 webapp 中获取 firebase 函数 URL?
- kubernetes - CoreDNS 后缀重写导致 DNS 查询返回重写的名称
- docker - 在损坏的系统上备份 docker 卷。卷恢复
- typescript - Ionic 4 路由器没有 navigate 和 navigateByUrl
- elixir - 为什么构造href链接时字符串插值不起作用?