Chrome 79为什么不接受通过SslStream(C#)发送的HTTPS响应? err_response_headers_truncated

问题描述 投票:0回答:1

我正在尝试构建一个简单的TLS Web服务器,该服务器在C#的localhost上运行。在这种情况下,我只希望服务器执行重定向。为此,我正在使用Microsoft提供的SslStream类。表面上似乎很容易使用。我遇到的问题是chrome似乎并没有享受我的HTTPS。 (底部代码)

响应非常简单:SslStream

[使用HTTP实施时,页面将按预期重定向,并且在客户端(Chrome)或服务器上不会发生任何错误或异常。

但是,当使用我的HTTPS实现时,我从chrome中得到了类似的东西:

无法访问此站点

该网页位于.....

ERR_RESPONSE_HEADERS_TRUNCATED

我不确定还要从我这里得到什么。我会说响应头没有被截断,但我不是chrome。调试时,我可以读取chrome的GET请求,但是chrome显然不能读取或不会读取我的响应。

我已经成功使用了完全相同的代码来重定向边缘(http和https),所以这似乎是特定于Chrome的

快速的有线通讯调查显示,直到服务器发送响应之前,一切都没有异常。举例说明:标准tcp syn / ack握手,tls握手,然后是客户端应用。数据(GET)服务器应用程序数据(301)。服务器发送301之后,将有3个FIN / ACK,一个保持活动状态,一个密码更改以及一堆RST。有了这些信息,chrome似乎没有给我们任何东西,但与此同时又没想到我们会抛弃它们,并开始拼命恳求重新连接。奇怪的是,如果我调试,它确实会重新连接。但是随后它抛出异常,因为服务器在读取时超时。我们给了Chrome第二次机会,但是Chrome不愿意将任何东西放回这个已经破裂的关系中,这留下了伤疤。

差不多了,我问的是我在做什么,Chrome显然不希望这样做,我该如何纠正它才能在Chrome上正常工作?我是否在做其他浏览器正在补偿的明显错误的操作,还是SslStream出了问题?

我的T​​LS代码基本上取自"HTTP/1.1 301 Moved Permanently\r\nCache-Control: no-store\r\nLocation: https://google.com/"Microsoft doc,并且http设计遵循相同的模式:接受,读取,写入,刷新,流关闭,tcp关闭。如果要复制,则创建的证书与X509Certificate.CreateFromCertFile(string)一起使用。 SslStream使用了TcpListener。为了生成我的证书,我遵循了IPAddress.Loopback并用this tutorial]导出了我的localhost.crtlocalhost.key

openssl pkcs12

我正在尝试构建一个简单的TLS Web服务器,该服务器在C#的localhost上运行。在这种情况下,我只希望服务器执行重定向。为此,我使用了Microsoft提供的SslStream类。它...

c# google-chrome https wireshark tls1.2
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.