问题描述
使用LDAP服务器进行身份验证时遇到问题。应用程序代码(.ear)部署在WebLogic Server中。在WebLogic Server中,代码未与LDAP连接,并且相同的代码设置在tomcat服务器中正常工作。 注意:有时仅是第一次使用WebLogic服务器进行身份验证。 Java版本:java版本“ 1.7.0_80”和weblogic服务器:10.3.6.0 Keystore运作良好,并且已经通过简单的Java程序进行了测试。
System.setProperty("java.naming.ldap.factory.socket","javax.net.ssl.SSLSocketFactory");
System.setProperty("javax.net.ssl.trustStore","TheKeyStore.keystore");
System.setProperty("javax.net.ssl.keyStorePassword","changeit");
JSSESocketFactory jsseFactory = new JSSESocketFactory(null);
ld = new LDAPConnection(jsseFactory);
ld.connect(host,port);
这是在Weblogic中连接ldap时遇到的异常。
netscape.ldap.LDAPException: JSSESocketFactory.makeSocket XXXXXXXXXXXXXXXXXXXXXXXXXXXX:636,Remote host closed connection during handshake (91); Cannot connect to the LDAP server
at netscape.ldap.factory.JSSESocketFactory.makeSocket(UnkNown Source)
at netscape.ldap.LDAPConnSetupMgr.connectServer(UnkNown Source)
at netscape.ldap.LDAPConnSetupMgr.openSerial(UnkNown Source)
at netscape.ldap.LDAPConnSetupMgr.connect(UnkNown Source)
at netscape.ldap.LDAPConnSetupMgr.access$000(UnkNown Source)
at netscape.ldap.LDAPConnSetupMgr$1.run(UnkNown Source)
at java.lang.Thread.run(Thread.java:662)
我已经检查了TLS协议,但它不起作用。 请为这个问题提供建议
解决方法
根据this question,Java 7默认为TLS 1.0,如果不接受该协议,可能会引起您提到的错误。