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


推荐阅读
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 探讨在构建类似Viber或WhatsApp的聊天应用时,如何有效实现客户端(Web、Android、iOS)与服务器之间的连接。本文将分析使用WebSockets标准及其替代方案的优劣。 ... [详细]
  • 随着毕业设计的结束,我终于有时间更新我的博客了。这次,我将分享如何在自己的服务器上搭建 Bitwarden,一个广受好评的开源密码管理工具。 ... [详细]
  • 本文汇集了我在网络上搜集以及在实际面试中遇到的前端开发面试题目,并附有详细解答。无论是初学者还是有一定经验的开发者,都应深入理解这些问题背后的原理,通过系统学习和透彻研究,逐步形成自己的知识体系和技术框架。 ... [详细]
  • Vue 2 中解决页面刷新和按钮跳转导致导航栏样式失效的问题
    本文介绍了如何通过配置路由的 meta 字段,确保 Vue 2 项目中的导航栏在页面刷新或内部按钮跳转时,始终保持正确的 active 样式。具体实现方法包括设置路由的 meta 属性,并在 HTML 模板中动态绑定类名。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • h5调用本地摄像头和麦克风一
    h5调用本地摄像头和麦克风一,Go语言社区,Golang程序员人脉社 ... [详细]
  • 微信小程序详解:概念、功能与优势
    微信公众平台近期向200位开发者发送了小程序的内测邀请。许多人对微信小程序的概念还不是很清楚。本文将详细介绍微信小程序的定义、功能及其独特优势。 ... [详细]
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社区 版权所有