热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Swift-NIO安全的Websocket服务器

如何解决《Swift-NIO安全的Websocket服务器》经验,为你挑选了1个好方法。

我正在尝试在我的iOS应用中创建websocket服务器和客户端,在此示例实现的帮助下,我成功地做到了这一点。(https://github.com/apple/swift-nio/tree/master/Sources/NIOWebSocketServer)-因此当前的工作情况是,我在应用启动时运行websocket服务器,然后将客户端加载到可以连接的webview中对它。

现在我的问题是我希望我的服务器保护Websocket服务器安全(基本上从HTTPS html页面连接到websocket服务器)

我是网络编程的新手,至少可以说Swift-nio文档没有。据我了解,我可以使用(https://github.com/apple/swift-nio-transport-services)

我发现了这个线程正是我所需要的-https://github.com/apple/swift-nio-transport-services/issues/39-只要我不在乎用例,就可以禁用TLS身份验证可以连接websocket。

所以我的问题是如何扩展我的客户端(https://github.com/apple/swift-nio/tree/master/Sources/NIOWebSocketClient)和服务器(https://github.com/apple/swift-nio/ tree / master / Sources / NIOWebSocketServer)以使用swift-nio-transport-service。

我可以添加NIOSSLContext和东西,但我想我需要添加EventLoopGroup和新bootstrap方法。我知道答案就在那...。但是我似乎无法确切指出。

任何指针将不胜感激。

谢谢。



1> Lukasa..:

要将简单的NIO服务器转换为一个服务器NIOTransportServices,您需要进行以下更改:

    NIOTransportServices服务器上添加依赖项。

    更改MultiThreadedEventLoopGroupNIOTSEventLoopGroup

    更改ClientBootstrapNIOTSConnectionBootstrap

    更改ServerBootstrapNIOTSListenerBootstrap

    生成并运行您的代码。

有些ChannelOption不起作用NIOTransportServices,但大多数却起作用:确认事物运行正常的最简单方法是快速测试通用流程。

这不会为您的应用程序添加任何额外的功能,但是确实可以使用iOS API为您提供相同的功能。

要将TLS添加到NIOTSConnectionBootstrapNIOTSListenerBootstrap,请使用.tlsOptions函数。例如:

NIOTSListenerBootstrap(group: group)
    .tlsOptions(myTLSOptions())

配置a NWProtocolTLS.Options有点棘手。您需要获取SecIdentity,需要与钥匙串进行交互。奎因在这里对此进行了一些讨论。

一旦有了SecIdentity,您就可以像这样使用它:

func myTLSOptions() -> NWProtocolTLS.Options {
    let optiOns= NWProtocolTLS.Options()
    let yourSecIdentity = // you have to implement something here
    sec_protocol_options_set_local_identity(options.securityProtocolOptions, sec_identity_create(yourSecIdentity)
    return options
}

一旦编写了代码,一切都会顺利进行!


作为扩展,如果您想在Linux上保护NIO服务器的安全,可以使用swift-nio-ssl来实现。由于没有钥匙串API,因此具有单独的配置,因此您需要从文件中加载更多密钥和证书。


推荐阅读
author-avatar
水皱皱_446
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有