使用 TLS 1.2 将客户端连接到 TCP 服务器

2024-01-10

我尝试将设备连接到 .Net (4.5.2) 服务器,但没有成功。它是设备打开的 TCP 连接,使用 TLS 1.2。

  • 在服务器端,我有一个 TCP 服务器的标准 .Net 实现:SslStream包裹着DotNetty https://github.com/Azure/DotNetty
  • 我无法更改设备上的任何内容

任何 .Net 客户端都可以使用安全的 TLS 连接成功连接到我的服务器。尝试使用 CURL 时它也可以工作,所以我得出结论我的 TCP 服务器工作正常。

因此,我(使用 Wireshark)比较了工作客户端发送的内容和无法连接的设备发送的内容。我发现的显着差异是(对于设备)缺少服务器名称扩展 (SNI) https://www.rfc-editor.org/rfc/rfc4366#section-3.1在 Client Hello TLS 消息中。

我尝试的下一步是使用手动将数据发送到我的服务器Pcap.Net https://github.com/PcapDotNet/Pcap.Net,即使用原始字节数组(我从尝试连接到我的服务器的设备获得的原始数据(感谢 Wireshark))手动发送 TCP SYN/TCP ACK/Client Hello 消息。我确认通过添加服务器名称扩展来调整不工作的 Client Hello 原始字节数组会导致我的 TLS 握手正常工作。

显然,我遇到了不包含 SNI 扩展的客户端以及如果不存在此信息则拒绝握手的服务器的问题。

如何更改 TCP 服务器的行为方式以接受不提供服务器名称扩展的客户端?首先是否可以使用标准.NetSslStream class?

AFAIK,SNI扩展不是强制性的,由客户端决定是否使用它,所以服务器应该理论上接受没有它的 Client Hello 消息。

任何指针将不胜感激。


.Net 4.5.2 支持 TLS1.2,但默认情况下处于禁用状态。

为了启用它,您必须显式定义安全协议集。

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

欲了解更多信息,请参阅以下链接https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.securityprotocol%28v=vs.110%29.aspx https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.securityprotocol%28v=vs.110%29.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 TLS 1.2 将客户端连接到 TCP 服务器 的相关文章

随机推荐

  • MongoDB 查找键等于数组中字符串的位置

    我试图在集合中查找给定键等于数组中的字符串之一的所有文档 这是该集合的一个示例 roomId room1 name first roomId room2 name second roomId room3 name third 这是要查看的数
  • 使用 wexpect 运行可执行文件

    我有一个可执行文件 evapo exe 必须使用输入文件 inputs prj 调用它 通常我使用Windows命令提示符 只需键入c myfiles evapo input prj 当然两个可执行文件和输入文件位于 myfiles 文件夹
  • 自动完成(如 facebook)已放弃重复值

    我在 jQuery 中使用自动完成功能 很像 Facebook 正如我在图片中提到的 我不希望自动完成中出现重复的值 看演示http wharsojo js googlecode com files jquery autocompletef
  • bootstrap 3 输入组 100% 宽度

    在 bootstrap 文档中 它们的输入组跨越 100 宽度 没有额外的标记 http getbootstrap com components input groups http getbootstrap com components i
  • boost::geometry::union 无结果

    我正在尝试使用 boost geometry union 合并一些多边形 但某些条目的输出向量为空 这是一个例子 include
  • 使用 GoogleOAuth2AuthenticationOptions 出现redirect_uri_mismatch 错误

    我正在尝试在 MVC 5 Web 应用程序中实现 Google 身份验证 身份验证工作正常 但我会检索个人资料和图片信息 为此 我添加了一个 GoogleOAuth2AuthenticationOptions 对象来指定其他声明 var g
  • 引用使用 TextBoxFor() 创建的控件的 ID

    I am lovingASP NET MVC 跟上发布 文档有时可能很棘手 所以也许我只是没有得到一些东西 我想使用 TextBoxFor 并且使用 LabelFor 等都很好 都可以奇迹发生在我身上 但如果我创造 想要用 jQuery 做
  • OCaml 中的这种模式匹配并不详尽

    我是 OCaml 新手 我编写了一些代码来获取列表的 n 元素 let rec n elem l n match n with 0 gt match l with h gt h gt failwith erorr with empty li
  • 从android中的Sqlite数据库获取日期

    在我的 Sqlite 数据库中 我将日期保存在数据类型 DATE 中 我怎样才能从光标获取这个日期 SQLite 使用 ISO8601 日期 时间格式存储表示 UTC GMT 当前时间的字符串 顺便说一下 这种格式 YYYY MM DD H
  • 平滑地动画 UISlider

    我想为 UISlider 制作动画 例如0 25 至 0 75 并返回 这应该向用户展示要做什么 我试过这个 self incrementCounter NSNumber numberWithInt 0 void incrementCoun
  • jquery $(window)中的滚动事件,找出位置差异

    我在用着 window scroll function e 我如何找出滚动的像素数 以及方向 如果是绝对数 Thanx 这是一种方法 jQuery function var lastScroll document body scrollTo
  • Python正则表达式灾难性回溯

    我正在搜索由 Ms word 生成的 XML 文件中的一些短语 问题是任何短语都可以用一些 XML 标签打断 这些标签可以位于单词之间 甚至单词内部 如示例中所示
  • AngularJS 重新编译动态 html 时删除旧的 $watchers

    我有一个 AngularJS 应用程序 用于动态构建页面 从服务器检索 XML 并通过读取 XML 构建页面或表单 对于 XML 我们必须构建几个页面 所有页面都彼此相关 并且可以通过 下一步 否定 上一个 按钮 为了实现我们有类似的东西
  • Android - 通知后删除接近警报

    我想做的是拥有一个接近警报服务 当您步入半径范围内时 不停止服务 该服务仅触发一次通知 每次您步入半径内和每次您走出半径时 我的代码都会触发通知 我一直在尝试使用布尔值和removeProximityAlert 但没有成功 有任何想法吗 i
  • 如何枚举 C# 中的所有托管线程?

    是否可以枚举 C 中的所有托管线程 当您在调试时遇到断点时 Visual Studio 似乎能够执行此操作 在 线程 窗口中 它显示所有正在运行的线程的列表 包括托管名称 有谁知道它是如何做到这一点的 调试器通常能够完成 正常 代码无法完成
  • SOAP 消息的最大大小是如何确定的?

    我在 PHP 5 2 6 上使用 NuSOAP 发现最大消息大小仅为 1000 字节 这使得执行任何有意义的操作变得困难 这是在端点的 WSDL 中设置的还是我可以在 NuSOAP 中配置的内容 关于 1000字节限制 的FUD 我查阅了n
  • 单一信号 - idsAvailable 已弃用

    OneSignal 的最新构建版本会生成类似 可用的 ids 已弃用 我怎样才能使用 playerID 获取权限订阅状态 而不是像我下面那样使用 idsAvailable OneSignal idsAvailable userId push
  • 在 ruby​​ on Rails 视图中生成基于列的表

    我需要一些帮助来动态生成基于列的表而不是基于行的表 假设我有一家医院 医院有很多病人 1号医院 Day 1 Day 2 Day 3 Patient 1 36 6 36 4 36 5 Patient 2 37 0 37 1 36 6 Pati
  • 如何从 Google Chrome 扩展程序获取当前选项卡的 URL?

    我很喜欢 Google Chrome 扩展 我只想知道如何将当前选项卡的 URL 存储在变量中 Use chrome tabs query 像这样 chrome tabs query active true lastFocusedWindo
  • 使用 TLS 1.2 将客户端连接到 TCP 服务器

    我尝试将设备连接到 Net 4 5 2 服务器 但没有成功 它是设备打开的 TCP 连接 使用 TLS 1 2 在服务器端 我有一个 TCP 服务器的标准 Net 实现 SslStream包裹着DotNetty https github c