热门标签 | 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,因此具有单独的配置,因此您需要从文件中加载更多密钥和证书。


推荐阅读
  • 本文将探讨iOS开发过程中需要掌握的三种关键编程语言——C、Objective-C和Swift,并深入解析面向过程与面向对象编程的概念,同时对比iOS与Android两大移动平台的特点。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 本文将详细介绍如何安装和使用 CactiEZ 的中文版本,帮助那些对英文界面不太熟悉的用户轻松掌握这一强大的网络监控工具。 ... [详细]
  • Barbican 是 OpenStack 社区的核心项目之一,旨在为各种环境下的云服务提供全面的密钥管理解决方案。 ... [详细]
  • 本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ... [详细]
  • WinSCP: 跨Windows与Linux系统的高效文件传输解决方案
    本文详细介绍了一款名为WinSCP的开源图形化SFTP客户端,该工具支持SSH协议,适用于Windows操作系统,能够实现与Linux系统之间的文件传输。对于从事嵌入式开发的技术人员来说,掌握WinSCP的使用方法将极大提高工作效率。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 在使用 iOS 应用时,遇到网络请求错误是常见的问题。本文将探讨两种常见的错误代码 -1003 和 -1001,并提供详细的解释和解决方案。 ... [详细]
  • 在Swift项目中集成Objective-C类或第三方框架的方法
    本文通过实例讲解如何在Swift项目中引入并使用Objective-C编写的ProgressHUD库。首先需要在项目中添加库文件,并设置Objective-C桥接头文件以实现语言间的互操作性。 ... [详细]
  • 在现代移动应用开发中,尤其是iOS应用,处理来自服务器的JSON数据是一项基本技能。无论是使用Swift还是PHP,有效地解析和利用JSON数据对于提升用户体验至关重要。本文将探讨如何在Swift中优雅地处理JSON,以及PHP中处理JSON的一些技巧。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 本文介绍了iOS应用开发的主要框架,包括Foundation、UIKit、CoreData及CoreGraphics等,并探讨了开发iOS应用所需的硬件和软件环境,以及推荐的编程语言。 ... [详细]
  • 本文基于前文的内容,进一步探讨如何在 iOS 应用中高效地实现高斯模糊背景效果。我们将通过具体代码示例,展示如何利用 Swift 和 UIKit 创建具有毛玻璃效果的界面背景。 ... [详细]
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社区 版权所有