0

我正在使用 WLS 12.1.3.0.0 中运行的 Java EE 6 应用程序中的 UnboundID LDAP SDK 与 LDAP 服务器交互。一切都适用于开放式连接。

尝试使用从 WLS SSLContext获得的 WLS SSLSocketFactory建立安全LDAPConnection时,超时且没有进一步有用的调试信息。LDAP 服务器上的证书由 Verisign 颁发。LDAPConnection

错误是:

LDAPException(resultCode=91 (connect error), errorMessage='尝试连接服务器 XXXX:1636 时发生错误:java.io.IOException: 无法在配置的 60000 毫秒超时内建立与服务器 XXXX:1636 的连接。 ')

我是否从 WLS 正确获取 SSLSocketFactory?

SSLContext sslContext = SSLContext.getInstance("https");
SSLSocketFactory sslFactory = sslContext.getSocketFactory();
ldapConn = new LDAPConnection(sslFactory,configBean.getLdapHost(),
                              configBean.getLdapPort(),configBean.getLdapBindDN(),
                              configBean.getLdapPassword());
4

2 回答 2

0

该消息表明应用程序无法在给定端口上与指定服务器建立 TCP 连接。您是否知道是否存在某种防火墙或其他机制可能会阻止连接尝试或导致流量被丢弃?这很容易测试,只需尝试在相同的地址和端口上创建一个新的 Socket。如果尝试只为该地址和端口创建一个简单的 TCP 套接字失败,则表明问题出在 LDAP SDK 之外。

尽管如果在 SSL 协商期间出现问题,我预计会出现不同的失败,但您可以尝试通过使用 new SSLUtil(new TrustAllTrustManager()).createSSLSocketFactory() 创建套接字工厂来排除这种情况。这将盲目信任服务器提供的任何证书。如果可行,则表明问题在于 SSLContext.getInstance("https") 正在创建一个在协商中某处失败的上下文。

如果没有其他帮助,您可以尝试在 LDAP SDK 中启用调试(请参阅 com.unboundid.util.Debug 类)以查看是否提供了任何有用的信息。

于 2014-09-16T20:39:26.220 回答
0

我同意,这似乎不是 SSL 错误。您可以启用 ATN 调试标志以获取更多详细信息:

-Dweblogic.debug.DebugSecurityAtn=true -Dweblogic.log.StdoutSeverity=Debug -Dweblogic.log.RedirectStdoutToServerLogEnabled=true -Dweblogic.log.RedirectStderrToServerLogEnabled=true
于 2016-09-19T14:32:46.047 回答