首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用TLS 1.2将客户端连接到TCP服务器

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

Stack Overflow用户
提问于 2016-10-24 18:22:40
回答 1查看 7.4K关注 0票数 18

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

在服务器端,我有一个标准的TCP服务器的.Net实现:通过DotNetty

  • I封装的SslStream无法更改

上的任何内容

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

因此,我比较了(使用Wireshark)工作客户端发送的内容与无法连接的设备发送的内容。我发现的重要区别是在Client Hello TLS消息中没有Server Name Extension (SNI) (对于设备而言)。

我尝试的下一件事是使用Pcap.Net手动发送数据到我的服务器,即使用原始字节数组手动发送TCP SYN/TCP ACK/Client Hello消息(我从尝试连接到我的服务器的设备获得的原始数据(感谢Wireshark) )。我确认,通过添加Server Name扩展来调整非工作客户端Hello原始字节数组会导致TLS握手工作。

因此,很明显,我遇到了一个问题,客户端不包含SNI扩展,并且服务器在不存在此信息的情况下拒绝握手。

如何更改TCP服务器的行为方式,以接受不提供服务器名扩展的客户端?首先可以使用标准的.Net SslStream类吗?

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

任何指针都会受到极大的感谢。

EN

回答 1

Stack Overflow用户

发布于 2016-11-03 16:55:11

.Net 4.5.2支持TLS1.2,但默认处于关闭状态。

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

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40216022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档