【问题标题】:Intermittent SSL handshake error间歇性 SSL 握手错误
【发布时间】:2012-08-11 04:48:35
【问题描述】:

我们遇到了 SSL 问题,我 99% 这不是您通常的证书信任存储旋转木马。

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

有时,它会起作用。通常在重启 Weblogic 后几个小时。

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

[ACTIVE] ExecuteThread: '10' for queue: 'weblogic.kernel.Default (self-tuning)',处理异常:java.net.SocketException: 连接重置 [ACTIVE] ExecuteThread:队列的“10”: 'weblogic.kernel.Default (self-tuning)',发送 TLSv1 警报:致命的, 描述 = 意外消息 [ACTIVE] ExecuteThread: '10' for queue: 'weblogic.kernel.Default (self-tuning)', WRITE: TLSv1 Alert, 长度 = 32 [ACTIVE] ExecuteThread: '10' 用于队列: 'weblogic.kernel.Default (self-tuning)',异常发送警报: java.net.SocketException:管道损坏

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

  • 通过 OpenSSL 连接并加载证书 - 每次都可以正常工作
  • 通过安全 ldapsearch 连接并加载证书 - 每次都可以正常工作
  • 通过自定义测试 Java 客户端连接 - 每次都可以正常工作
  • 使用 Wireshark 和私钥解密 SSL 握手。

我注意到 Wireshark 的“糟糕”握手是在客户端发送 Change Cipher Spec 后,完成的消息 AD 没有以实物形式回复。更重要的是,Wireshark 无法解密 SSL 握手,失败:

ssl_decrypt_pre_master_secret 错误的 pre_master_secret 长度(109, 预期 48) dissect_ssl3_handshake 无法解密预主密钥

注意,当 SSL 握手完美运行时,Wireshark SSL 解密也能完美运行。

我看不到 SSL 握手的好坏有任何显着差异,直到 AD 服务器没有响应。

在这一点上我很难过......我真的很难理解为什么这会在某些时候失败并在其余时间工作,在这一点上我真的只是希望关于可能会发生什么的一些建议继续。

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

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

经过一番研究,我设法发现对应于 SSL“BAD_RECORD_MAC”错误。

此时我唯一的理论是,由于某种原因,错误的公钥被用于加密握手......我看不出为什么服务器(和 Wireshark)无法解密完成的消息。

谢谢!

更新:

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

【问题讨论】:

  • 这很难从提供的数据中诊断出来。我建议从 cert 子系统和网络嗅探中并行获取一些日志记录(即,wireshark 或类似的)。这会有所帮助...

标签: java security ssl active-directory weblogic


【解决方案1】:

因此,经过大量的研究、实验和灵魂探索。我们最终将此问题追溯到我们用来连接外部系统的第三方库。在初始化时,它会将自身添加为 JSSE 默认提供者之前的安全提供者。我不知道为什么这会继续破坏所有后续的 SSL 连接......但确实如此。

感谢您的帮助。

【讨论】:

    【解决方案2】:

    据我了解,您遇到的问题是间歇性的。也就是说,您可以通过 SSL 连接到 AD,但有时您会注意到此错误。所以我猜证书问题Error LDAPS 不是你的问题。

    从你的描述我只能想到以下几点:
    首先,您在这里没有提供太多实际细节,而是您的评论:

    注意 Wireshark SSL 解密在 SSL 握手时完美运行 完美运行。

    暗示密码套件在坏情况下是不同的。请注意,即使您拥有私钥,wireshark 也无法通过 DHE 生成的密钥解密连接。
    因此,如果密码套件在坏情况和好情况下确实不同(例如 RSA 与 DHE),您应该进行调查。
    此外,按照您描述的方式,问题似乎发生在重新谈判期间。也许重新协商被禁用,您可以启用它?已经被认为是不安全的,一般可以在服务器中配置

    【讨论】:

    • 我知道缺少细节,但我必须小心一点。我会看看我能做些什么。现在虽然我只是感谢任何建议。
    • 我也应该澄清间歇性的含义。一般重启 Weblogic 几个小时后就可以正常工作了。似乎没有固定的时间框架,但很难确定。在某些时候它会停止工作并且通常会一直处于中断状态,直到有人重新启动服务器。
    猜你喜欢
    • 1970-01-01
    • 2016-10-31
    • 2016-05-20
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 2016-08-08
    • 2016-04-13
    相关资源
    最近更新 更多