我正在尝试发出HTTPS POST请求。连接在一开始就突然结束。我使用Wireshark进行了以下捕获。 192.168.0.33是我的客户端尝试连接到服务器。 192.185.47.210是服务器。
Frame 57: 191 bytes on wire (1528 bits), 191 bytes captured (1528 bits) on interface 0
Ethernet II, Src: Actionte_39:b9:de (18:1b:eb:39:b9:de), Dst: CadmusCo_f6:2b:9b (08:00:27:f6:2b:9b)
Internet Protocol Version 4, Src: 192.185.47.210 (192.185.47.210), Dst: 192.168.0.33 (192.168.0.33)
Transmission Control Protocol, Src Port: 443 (443), Dst Port: 1143 (1143), Seq: 1, Ack: 110, Len: 137
Secure Sockets Layer
TLSv1 Record Layer: Handshake Protocol: Server Hello
Content Type: Handshake (22)
Version: TLS 1.0 (0x0301)
Length: 81
Handshake Protocol: Server Hello
TLSv1 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
Content Type: Change Cipher Spec (20)
Version: TLS 1.0 (0x0301)
Length: 1
Change Cipher Spec Message
TLSv1 Record Layer: Handshake Protocol: Encrypted Handshake Message
Content Type: Handshake (22)
Version: TLS 1.0 (0x0301)
Length: 40
Handshake Protocol: Encrypted Handshake Message
我怀疑问题出在数据包57上,因为收到此数据包后,客户端会启动TCP连接断开连接。包57看起来像
{{1}}
其他信息:
客户端是在Windows XP上运行的C#程序。该调用由WebRequest(https://msdn.microsoft.com/en-us/library/system.net.webrequest%28v=vs.110%29.aspx)类进行。服务器位于共享主机(Hostgator)上,具有专用IP和COMODO的SSL证书。
问题
任何人都可以帮助我理解为什么接收数据包57会导致客户端断开连接吗?
答案 0 :(得分:1)
基于我在评论中链接的this Q&A,以及其他经过编辑的事实,该连接尝试是由Windows XP中的C#进行的,最可能的原因是针对受信任根的验证可能会失败。
您看到的问题可能不会出现在浏览器中;这可能会令人惊讶。之所以如此,是因为除了系统中的内容之外,Web浏览器通常还提供自己的信任数据集 - 并且可能更新,而Windows必须依赖更新/服务包,这些更新/服务包不再出现(和即使,关于这些事情的操作系统政策可能比浏览器更加严格。)
解决方案是将root添加到系统信任的域中,或者以编程方式将其加载到应用程序中。
答案 1 :(得分:-1)
服务器可能要求客户端发送客户端证书,而您没有。关闭连接是服务器的唯一防御。