way*_*neb 3 java security ssl weblogic active-directory
我们有 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: Connection reset [ACTIVE] ExecuteThread: '10' for queue: 'weblogic.kernel .Default (self-tuning)', SEND TLSv1 ALERT: fat, description = unknown_message [ACTIVE] ExecuteThread: '10' for queue: 'weblogic.kernel.Default (self-tuning)', WRITE: TLSv1 Alert, length = 32 [ACTIVE] ExecuteThread: '10' for queue: 'weblogic.kernel.Default (self-tuning)', 异常发送警报: java.net.SocketException: Broken pipe
到目前为止,我已经尝试了以下方法来理解/复制它:
我在 Wireshark 中注意到的“坏”握手是,在客户端发送更改密码规范后,完成消息 AD 没有回复。更重要的是,Wireshark 无法解密 SSL 握手,失败:
ssl_decrypt_pre_master_secret 错误的 pre_master_secret 长度(109,预期为 48) dissect_ssl3_handshake 无法解密 pre_master_secret
注意当 SSL 握手完美时,Wireshark SSL 解密工作完美。
在 AD 服务器没有响应之前,我看不到 SSL 握手的好坏有任何显着差异。
在这一点上我很难过......我真的很难理解为什么这会在某些时候失败并在其余时间工作,在这一点上我真的只是希望对可能发生的事情提出一些建议。
哦对了,差点忘了。Active Directory 事件日志中有错误:
事件 ID:36888 引发了以下致命警报:20。内部错误的状态是 960。
经过一番研究,我发现对应于 SSL“BAD_RECORD_MAC”错误。
此时我唯一的理论是,由于某种原因,错误的公钥被用于加密握手......我不明白为什么服务器(和 Wireshark)无法解密完成的消息。
谢谢!
更新:
我比较了不好的和好的情况,两种情况下的密码规范是相同的:TLS_RSA_WITH_AES_128_CBC_SHA。我还比较了来自客户端和服务器端的数据包,除了正常的以太网和 IP 协议差异外,它们似乎都相同。
所以经过大量的研究、实验和反省。我们最终将这个问题追溯到我们用来连接外部系统的第三方库。在初始化时,它会将自己添加为 JSSE 默认提供程序之前的安全提供程序。我不知道为什么这会继续破坏所有后续的 SSL 连接……但确实如此。
谢谢你的帮助。
归档时间: |
|
查看次数: |
5656 次 |
最近记录: |