LDAPS:简单绑定失败

anu*_*dal 5 java ssl ldap

我在从应用程序连接到 LDAPS 时遇到问题。我已在 JRE 密钥库上导入了所有必需的证书。

当我将以下字符串放入 java.security 中时,我可以调用 LDAP

jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
Run Code Online (Sandbox Code Playgroud)

当我将此行更改为

jdk.tls.disabledAlgorithms=MD5, DSA, DESede, DES_CBC, DHE, RC4, SSLv3, ECDH_anon, DH_anon, NULL, DH keySize < 768, RSA keySize < 2048
Run Code Online (Sandbox Code Playgroud)

我的连接失败并出现以下错误:

Caused by: javax.naming.CommunicationException: simple bind failed: testxxxxl.xxxx.com:636 [Root exception is java.net.SocketException: Socket closed]
    at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:218)
    at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2740)
    at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:316)
    at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:193)
    at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:211)
    at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:154)
    at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:84)
    at org.jboss.as.naming.InitialContext.getDefaultInitCtx(InitialContext.java:122)
    ... 72 more
Caused by: java.net.SocketException: Socket closed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:152)
    at java.net.SocketInputStream.read(SocketInputStream.java:122)
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
    at sun.security.ssl.InputRecord.read(InputRecord.java:480)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
    at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:709)
    at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
    at com.sun.jndi.ldap.Connection.writeRequest(Connection.java:431)
    at com.sun.jndi.ldap.Connection.writeRequest(Connection.java:404)
    at com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:358)
Run Code Online (Sandbox Code Playgroud)

在wireshark中,它抱怨证书无效。我的问题是,如果我的证书无效,它也不应该与此行一起工作。

jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题。

小智 0

如果您使用安全连接到 LDAP 服务器,并且在尝试连接到 Active Directory 时看到如下所示的错误: 简单绑定失败:ad.hostname.com:636 将 LDAP 服务器公共证书直接导入到 Klocwork 密钥库(应该是_jvm\lib\security\cacerts)。这会导致 Klocwork 端的证书验证过程被绕过,因为您已决定通过将 LDAP 服务器证书导入到受信任证书列表中来信任它。

请您的 LDAP 管理员将 LDAP 服务器证书的此扩展设置为非关键。