Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LDAPS:简单绑定失败_Java_Ssl_Ldap - Fatal编程技术网

Java LDAPS:简单绑定失败

Java LDAPS:简单绑定失败,java,ssl,ldap,Java,Ssl,Ldap,我从应用程序连接到LDAP时遇到问题。我已经在JRE密钥库上导入了所有必要的证书 在java.security中输入以下字符串时,我能够调用ldap jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048 jdk.tls.disabledAlgorithms=MD5、SSLv3、DSA、RSA密钥大小

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

在java.security中输入以下字符串时,我能够调用ldap

jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
jdk.tls.disabledAlgorithms=MD5、SSLv3、DSA、RSA密钥大小<2048
当我把这行改成

jdk.tls.disabledAlgorithms=MD5, DSA, DESede, DES_CBC, DHE, RC4, SSLv3, ECDH_anon, DH_anon, NULL, DH keySize < 768, RSA keySize < 2048
jdk.tls.disabledAlgorithms=MD5、DSA、DESede、DESU CBC、DHE、RC4、SSLv3、ECDH_anon、DH_anon、NULL、DH keySize<768、RSA keySize<2048
我的连接失败,出现以下错误:

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)
原因:javax.naming.CommunicationException:简单绑定失败:testxxl.xxxx.com:636[根异常为java.net.SocketException:套接字关闭]
位于com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:218)
位于com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2740)
位于com.sun.jndi.ldap.LdapCtx(LdapCtx.java:316)
位于com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:193)
位于com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:211)
位于com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:154)
位于com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:84)
位于org.jboss.as.naming.InitialContext.getDefaultInitCtx(InitialContext.java:122)
... 72多
原因:java.net.SocketException:套接字已关闭
位于java.net.SocketInputStream.socketRead0(本机方法)
位于java.net.SocketInputStream.read(SocketInputStream.java:152)
位于java.net.SocketInputStream.read(SocketInputStream.java:122)
位于sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
位于sun.security.ssl.InputRecord.read(InputRecord.java:480)
位于sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934)
位于sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
位于sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:709)
位于sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
位于java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
位于java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
位于com.sun.jndi.ldap.Connection.writeRequest(Connection.java:431)
位于com.sun.jndi.ldap.Connection.writeRequest(Connection.java:404)
位于com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:358)
在wireshark中,它抱怨证书无效。我的问题是,如果我的证书无效,它也不应该使用这条线路

jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
jdk.tls.disabledAlgorithms=MD5、SSLv3、DSA、RSA密钥大小<2048

请帮助我解决此问题。

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


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

在最新版本的Java中,TLSv1已被禁用。 在我的例子中,这是在从Java8升级到Java11时发生的。 重新启用TLSv1有帮助。它与定义属性一样简单:

-Djdk.tls.client.protocols=TLSv1
当然,您还需要其他协议,因此您可以指定完整列表:

-Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3

嗨,谢谢你的回复。我们也向cacerts进口了。还是不行。我不明白禁用的算法参数如何对此产生影响。听起来客户端和服务器无法协商密码套件。当您禁用这些算法时,它们就可以。当客户机和服务器是不同版本的Java时,这种类型的活动会出现一些问题。