java - LDAPS:简单绑定失败
问题描述
我在从我的应用程序连接到 LDAPS 时遇到问题。我已经在 JRE 密钥库上导入了所有必要的证书。
当我将以下字符串放入 java.security 时,我可以调用 LDAP
jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
当我将此行更改为
jdk.tls.disabledAlgorithms=MD5, DSA, DESede, DES_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)
在wireshark它抱怨证书无效。我的问题是如果我的证书无效,它也不应该与这条线一起工作。
jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
请帮我解决问题。
解决方案
如果您使用与 LDAP 服务器的安全连接,并且在尝试连接到 Active Directory 时看到如下错误: simple bind failed: ad.hostname.com:636 将 LDAP 服务器公共证书直接导入 Klocwork 密钥库(其中应该是_jvm\lib\security\cacerts)。这会导致绕过 Klocwork 端的证书验证过程,因为您已决定通过将 LDAP 服务器证书导入您的受信任证书列表来信任它。
请您的 LDAP 管理员将此 LDAP 服务器证书的扩展名设置为非关键。
推荐阅读
- ios - iOS QLPreviewController - 保存时显示正确的文件名
- python - 在 while 循环中使用 return 在 main 函数中无法正确打印
- xpath - 使用 Scrapy 从跨度类中检索文本
- windows - 如何使用带有现代 Windows 10 更新的 64 位汇编程序将文本写入控制台?
- javascript - 增加计数器不会改变其他变量的值
- sql - SQL 按键重复开始和结束日期
- python - 为 CNN 使用不同的目标向量
- java - 在 java 字节码中创建一个 char 数组会产生一个 Object
- java - 第一次 Spring4 MVC 尝试未使用 Tomcat 7 加载
- python - 在python中计算对向量概率分布的有效方法