Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试和修复间歇性SSL';对等机重置连接';错误?_Ssl_Openssl_Ssl Certificate - Fatal编程技术网

如何调试和修复间歇性SSL';对等机重置连接';错误?

如何调试和修复间歇性SSL';对等机重置连接';错误?,ssl,openssl,ssl-certificate,Ssl,Openssl,Ssl Certificate,当通过HTTPS连接到服务器(Windows/IIS)时,我们的客户端(CentOS)上偶尔会出现一个错误(百分之一) 错误是:SSL:connectionresetbypeer 运行openssl s_client-connect example.com:443-prexit在99%的时间内有效,但有时会返回write:errno=104确认连接重置问题 有趣的是,当连接重置并失败时,握手的大小不同(更小),但我看不到如何实际看到握手 成功连接是:SSL握手读取5308字节,写入319字节 失

当通过HTTPS连接到服务器(Windows/IIS)时,我们的客户端(CentOS)上偶尔会出现一个错误(百分之一)

错误是:
SSL:connectionresetbypeer

运行
openssl s_client-connect example.com:443-prexit
在99%的时间内有效,但有时会返回
write:errno=104
确认连接重置问题

有趣的是,当连接重置并失败时,握手的大小不同(更小),但我看不到如何实际看到握手

成功连接是:
SSL握手读取5308字节,写入319字节

失败的连接是:
SSL握手已读取5249字节,写入198字节

始终使用相同的协议(TLS)和密码

服务器端,Windows事件日志中的错误为:
生成了致命警报并发送到远程端点。这可能导致连接终止。TLS协议定义的致命错误代码为20。Windows SChannel错误状态为960。

致命错误代码20是一条MAC不正确的记录。此消息总是致命的。


有人能帮我进一步调试吗?由于这只是一个偶然的问题,我正在努力思考为什么会发生这种情况。谢谢

不是应用程序错误,但很可能是基础结构中的低级错误。不是特定于SSL,而是特定于面向连接的套接字。数据包TTL过期、网络路由更改或许多其他情况。编写良好的套接字代码总是会在失败之前重试几次。这是很难调试的,因为它通常不能在短时间内重复


许多年前,这个错误让我发疯。我尽我所能去追踪它,甚至写了一个监视器来浏览系统的网络图,以确保图中的每个节点都能正常工作和响应。大约一年后,当更换子网上的交换机时,问题消失了。交换机靠近应用程序,而不是数据中心中图表上的节点。

很可能客户端没有提供请求的证书,因为没有满足服务器标准的证书。然而,如果没有证据,这只是猜测,你的问题在原则上是无法回答的。这样的情况不是一直都可以重现吗?我在这方面回忆了两个勘误表。首先,一个旧版本的OpenSSL有时会产生一个坏的MAC。我认为它是OpenSSL 1.0.1,我希望它能在几乎所有的客户端上进行修补。其次,我似乎还记得Diffie Hellman格式的一个问题。另见。我不记得IIS是否遇到DH问题,但我知道它偶尔会出现(128次中有1次)。