【问题标题】:.NET 4.8 TLS 1.3 Issue on Windows 10Windows 10 上的 .NET 4.8 TLS 1.3 问题
【发布时间】:2020-10-05 16:55:07
【问题描述】:

一个在 Windows 10(版本 10.0.19041)上运行的 .NET 4.8 应用程序,使用 how to enable TLS 1.3 in windows 10 的注册表启用了 TLS 1.3

但是运行以下代码:

 try
            {                
                System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13;
                using (var client = new WebClient())
                { 
                    var img = client.DownloadData("URL of an image - Only TLS 1.3 at client side - removed for privacy purposes");
                    MemoryStream ms = new MemoryStream(img);
                    Image i = Image.FromStream(ms);
                    i.Save(AppDomain.CurrentDomain.BaseDirectory+"/img1.jpeg");
                }
            }
            catch(Exception ex)
            {
                logger.Log(LogLevel.Error, ex.ToString());
            }

产生以下 - 异常 StackTrace:

2020-10-05 12:40:52.4779 ERROR System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> System.IO.IOException: Cannot determine the frame size or a corrupted frame was received.
   at System.Net.Security._SslStream.StartFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security._SslStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.Net.TlsStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)

我发现了一个与 .NET 5.0 相关的问题,但我不知道该问题是否已修复或将在 .NET 4.8 中修复 https://github.com/dotnet/runtime/issues/1720

【问题讨论】:

    标签: .net windows-10 tls1.3 .net-4.8


    【解决方案1】:

    来自Transport Layer Security (TLS) best practices with the .NET Framework document issue,约会2020-08-21:

    .NET Framework 尚不支持 TLS 1.3。我们将很快开始研究 (cc @wfurt)。底线是,要使用 TLS 1.3,我们必须使用新的 Windows API,因此我们必须在 .NET Framework 中更改我们的代码,并且由于 TLS 1.3 的其他要求(在TLS 1.2 及更低版本)。

    另请注意,具有 TLS 1.3(非实验性支持)的 Windows 10 仅在最近发布,我认为仅在 Windows 10 Insider 版本中发布(@wfurt 有更多详细信息)。

    在 .NET Core 我们最近在即将推出的 .NET 5 RC1 版本中实现了 TLS 1.3 支持。您可以在那里试用(当然,在支持它的操作系统版本上)。 p>

    .NET 5 RC1 已发布并拥有可用于生产的上线许可证。

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 2019-09-28
      • 2019-12-27
      • 1970-01-01
      • 2021-01-23
      • 2019-02-16
      • 2017-09-19
      • 1970-01-01
      • 2021-02-25
      相关资源
      最近更新 更多