当前位置: 首页 > 知识库问答 >
问题:

间歇性SSL握手错误

暴才俊
2023-03-14

我们有一个SSL问题,我是99%,这不是你通常的证书信任商店旋转木马。

我们有一个Weblogic服务器试图通过LDAPS与Active Directory建立SSL连接,底层SSL实现是JSSE。

有时,它是有效的。通常在重新启动Weblogic后的几个小时内。

之后,我们开始得到SSL握手错误,与SSL调试打开我们看到:

[ACTIVE]ExecuteThread:'10'用于队列:'weblogic。内核默认值(自调优)”,处理异常:java。网SocketException:连接重置[ACTIVE]ExecuteThread:'10'用于队列:'weblogic。内核默认(自调整)“”发送TLSv1警报:致命,描述=意外消息[ACTIVE]ExecuteThread:'10'队列:'weblogic。内核默认设置(自调整)’,写入:TLSv1警报,长度=32[ACTIVE]ExecuteThread:'10'队列:'weblogic。内核默认设置(自调优)”,异常发送警报:java。网插座异常:管道破裂

到目前为止,我尝试了以下方法来理解/复制它:

  • 通过OpenSSL连接并加载证书-每次正常工作

我在Wireshark中注意到的“坏”握手是,在客户端发送更改密码规范后,已完成的消息广告不会以实物形式回复。更重要的是,Wireshark无法解密SSL握手,失败:

ssl_decrypt_pre_master_secret错误的pre_master_secret长度(109,预期为48)剖析_ssl3_握手无法解密pre master secret

注意:当SSL握手工作正常时,Wireshark SSL解密工作正常。

我看不出SSL握手的好坏有什么显著区别,直到AD服务器没有响应为止。

在这一点上,我被难住了...我真的很难理解为什么这会在一段时间内失败,而在接下来的时间里会成功,在这一点上,我真的只是希望能得到一些关于可能会发生什么的建议。

哦,是的,差点忘了。Active Directory事件日志中存在错误:

事件ID:36888引发了以下致命警报:20。内部错误的状态为960。

经过一番研究,我发现这与SSL“BAD_RECORD_MAC”错误相对应。

在这一点上,我唯一的理论是,出于某种原因,错误的公钥被用来加密握手。。。我不明白为什么服务器(和Wireshark)无法解密完成的消息。

谢谢!

更新:

我比较了好的和坏的情况,这两种情况下的密码规格是相同的:TLS_RSA_与_AES_128_CBC_SHA。我还比较了客户端和服务器端的数据包,除了正常的以太网和IP协议差异,它们看起来都是相同的。

共有2个答案

李泓
2023-03-14

据我所知,你有间歇性的问题。也就是说,您可以通过SSL连接到AD,但偶尔会注意到此错误。因此,我想证书问题错误LDAP不是您的问题。

从你的描述中,我只能想到以下几点:
首先,你没有给出太多的实际细节,而是给出了你的评论:

注意:当SSL握手工作正常时,Wireshark SSL解密工作正常。

给我一个暗示,在糟糕的情况下,密码组是不同的。请注意,wireshark无法解密由DHE生成的密钥上的连接,尽管您有私钥。
因此,您应该在调查中查看密文组在坏情况和好情况下是否确实不同(例如:
另外,你描述的方式,似乎问题发生在重新协商期间。也许重新协商被禁用,您可以启用它?它被认为是不安全的,通常可以在服务器中配置

百里锋
2023-03-14

所以经过大量的研究、实验和自我反省。我们最终将此问题追踪到用于连接外部系统的第三方库。在初始化时,它将在JSSE默认提供程序之前将自身添加为安全提供程序。我不知道为什么这会破坏所有后续的SSL连接...但是它做到了。

谢谢你的帮助。

 类似资料:
  • 我看到断断续续的SSL握手错误,Java客户端和浏览器通过Apache HTTP服务器访问网站。这种情况很少发生,但它每天都会破坏构建并影响用户体验。服务器被配置为建立安全连接,但不需要来自客户端的证书。 我已经在Java测试客户端和服务器上打开了SSL调试输出(见下文)。我所观察到的是,每当发生握手异常时,服务器似乎已经发送了对客户端证书的请求。我不明白为什么它会这样做,为什么这只是偶尔发生。当

  • 我有一个用Java编写的REST API,在JBoss下运行。最近我们将JVM从1.6更新到1.7。这开始导致只有我们正在连接的Python客户端出现问题。间歇性地,Python客户端出现握手失败。我们编写了一个非常简单的测试来重现这个问题: 给出以下输出: 第67次调用在这次运行中失败了,但是每次测试运行失败的时间不同。 我们的其他客户端(Java、Groovy和Ruby)工作起来没有任何问题。

  • 笔记: 最初我试图从使用如下代码 代码1: 错误: 在谷歌搜索之后,我发现您已经使用了SSL验证,使用适配器会话可以解决这个问题。但我仍然有错误,请找到下面的代码和错误 代码2: 错误:

  • 我已经编写了一个程序,从usb摄像头捕获图像,并根据检测到的每帧颜色跟踪对象的位置。间歇性(可能在1分钟、10分钟或半小时后发生)我收到错误消息: 我遵循的流程是: 用相机拍摄一帧,cap=cv2。视频捕获(1)/cap。read() 变换几何,cv2。透视图 高斯模糊滤波器,cv2。高斯模糊 BGR到HSV转换,cv2。CVT彩色(模糊帧,cv2.COLOR\u BGR2HSV) 轮廓发现和分析

  • 我最近从AWS ELB转到HAProxy。我正在负载平衡器(HAProxy 1.5dev19)上终止SSL。 自从切换以来,我一直在HAProxy日志中遇到一些SSL连接错误(占请求总数的5-10%)。有三种类型的错误重复:SSL握手期间连接关闭SSL握手期间超时SSL握手失败(这种情况很少发生) 我使用的是免费的StartSSL证书,所以我的第一个想法是一些主机在接受该证书时遇到了问题,我过去没

  • 我正在尝试使用SSL证书将java客户端与JMX服务器连接。 但是不幸的是,这个连接给出了一个SSL握手错误。当我尝试使用< code >-DJ avax . net . debug = all 标志对此进行调试时,我在java客户端上得到以下错误消息。 2016-07-15T13:29:50.02-0700[APP/0]退出RMI更新清洁-[10.200.0.27:44445,javax.rmi