强制HttpWebRequest和ClientWebSocket使用TLS 1.2

时间:2018-11-12 14:19:15

标签: c# .net unity3d websocket mono

我正在尝试使用ClientWebSocket类连接到Websocket。我正在使用Unity 2017.4.10。不幸的是,C#/ Mono始终使用TLS 1.0,由于某种原因它失败了。当我检查与Wireshark的连接时,我收到一个加密的警报数据包,​​并且连接关闭。

我已经尝试通过设置以下方式强制使用TLS 1.2:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

但WebSocket仍然尝试与TLS 1.0连接。

当连接到wss://echo.websocket.org时,它可以工作,因为websocket.org仅支持TLS 1.2。不幸的是,我的提供商仍然支持TLS 1.0 1.1和1.2。 无论我尝试哪种方式,HttpWebRequestClientWebSocket类始终使用TLS 1.0。

我知道使用TLS 1.0是因为Wireshark和Fiddler这样说。

2 个答案:

答案 0 :(得分:1)

这看起来像是一个统一错误,已在2018.2中修复

Issue

答案 1 :(得分:0)

对于Websocket尝试: WebSocketClient.SslConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12;