Java升级8至11导致LDAPS连接出现问题(连接或出站已关闭)

Java升级8至11导致LDAPS连接出现问题(连接或出站已关闭),java,ldap,Java,Ldap,java升级后出现此问题: 具有DNS别名的LDAP在工作时不与java 11.0.2连接 使用Java8 DNS别名如下保持不变此处无更改唯一更改是java升级8至11: $Ns1.XXXXX.zz Server: 10.222.249.209 Address: 10.222.249.209#53 Name: ad1.XXXXX.zz Address: 10.222.249.205 Name: ad1.XXXXX.zz Address: 10.222

java升级后出现此问题:

  • 具有DNS别名的LDAP在工作时不与java 11.0.2连接 使用Java8
DNS别名如下保持不变此处无更改唯一更改是java升级8至11:

$Ns1.XXXXX.zz

Server:         10.222.249.209
Address:        10.222.249.209#53

Name:   ad1.XXXXX.zz
Address: 10.222.249.205
Name:   ad1.XXXXX.zz
Address: 10.222.249.204
Name:   ad1.XXXXX.zz
Address: 10.222.249.210
  • 使用java 11.0.2的LDAP direct IP它可以正常工作没有问题:
$nsqdegsf.XXXXX.zz

Server:         10.222.249.209
Address:        10.222.249.209#53

Name:   qdegsf.XXXXX.zz
Address: 10.222.249.210
工艺参数:

/opt/3rdparty/jdk_installed/jdk-11.0.2/bin/java-Dsserver-Djdk.serialFilter=*-Dfile.encoding=UTF8-Djavax.net.ssl.trustStore=/opt/3rdparty/tomcat/conf/svrtrust-Djavax.net.ssl.trustStorePassword=XXXX-Djavax.net.ssl.keyStore=/opt/3rdparty/tomcat/conf/svrkystore.jks

下面是建立ldap连接时的问题跟踪

java.lang.RuntimeException: connection to ldap server failed;url;ldaps://ad1.XXXXX.zz:636;authDN;sa_XXX@XXXXX.zz
javax.naming.CommunicationException: simple bind failed: ad1.XXXXX.zz:636 [Root exception is java.net.SocketException: Connection or outbound has closed]
java.net.SocketException: Connection or outbound has closed
Trace for the thrown exceptions:
java.lang.RuntimeException: connection to ldap server failed;url;ldaps://ad1.XXXXX.zz:636;authDN;sa_XXX@XXXXX.zz
    at auth.ldap.LdapConnection.testConnection(LdapConnection.java:46)


Caused by: javax.naming.CommunicationException: simple bind failed: ad1.XXXXX.zz:636 [Root exception is java.net.SocketException: Connection or outbound has closed]
    at java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:219)
    at java.naming/com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2795)
    at java.naming/com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:320)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83)
    at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
    at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
    at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
    at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:208)
    at java.naming/javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)
    at auth.ldap.LdapConnection.testConnection(LdapConnection.java:41)
    ... 3 more
Caused by: java.net.SocketException: Connection or outbound has closed
    at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:976)
    at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
    at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
    at java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:398)
    at java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:371)
    at java.naming/com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:359)
    at java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:214)
    ... 15 more
javax.naming.CommunicationException: simple bind failed: ad1.XXXXX.zz:636 [Root exception is java.net.SocketException: Connection or outbound has closed]
    at java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:219)
    at java.naming/com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2795)
    at java.naming/com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:320)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83)
    at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
    at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
    at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
    at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:208)
    at java.naming/javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)
    at auth.ldap.LdapConnection.testConnection(LdapConnection.java:41)
Caused by: java.net.SocketException: Connection or outbound has closed
    at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:976)
    at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
    at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
    at java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:398)
    at java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:371)
    at java.naming/com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:359)
    at java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:214)
    ... 15 more
java.net.SocketException: Connection or outbound has closed
    at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:976)
    at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
    at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
    at java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:398)
    at java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:371)
    at java.naming/com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:359)
    at java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:214)
    at java.naming/com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2795)
    at java.naming/com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:320)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153)
    at java.naming/com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83)
    at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
    at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
    at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
    at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:208)
    at java.naming/javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)
    at nims.auth.ldap.LdapConnection.testConnection(LdapConnection.java:41)
    at auth.LdapAuthenticationService.doTestConnection(LdapAuthenticationService.java:50)
java.lang.RuntimeException:与ldap服务器的连接失败;网址;ldaps://ad1.XXXXX.zz:636;authDN;sa_XXX@XXXXX.zz
javax.naming.CommunicationException:简单绑定失败:ad1.XXXXX.zz:636[根异常为java.net.SocketException:连接或出站已关闭]
java.net.SocketException:连接或出站已关闭
抛出异常的跟踪:
java.lang.RuntimeException:与ldap服务器的连接失败;网址;ldaps://ad1.XXXXX.zz:636;authDN;sa_XXX@XXXXX.zz
位于auth.ldap.LdapConnection.testConnection(LdapConnection.java:46)
原因:javax.naming.CommunicationException:简单绑定失败:ad1.XXXXX.zz:636[根异常为java.net.SocketException:连接或出站已关闭]
位于java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:219)
位于java.naming/com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2795)
位于java.naming/com.sun.jndi.ldap.LdapCtx.(LdapCtx.java:320)
位于java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192)
位于java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210)
位于java.naming/com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153)
位于java.naming/com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83)
位于java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
位于java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
位于java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
位于java.naming/javax.naming.InitialContext。(InitialContext.java:208)
位于java.naming/javax.naming.directory.InitialDirContext。(InitialDirContext.java:101)
位于auth.ldap.LdapConnection.testConnection(LdapConnection.java:41)
... 3个以上
原因:java.net.SocketException:连接或出站已关闭
位于java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:976)
位于java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
位于java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
位于java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:398)
位于java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:371)
位于java.naming/com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:359)
位于java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:214)
... 还有15个
javax.naming.CommunicationException:简单绑定失败:ad1.XXXXX.zz:636[根异常为java.net.SocketException:连接或出站已关闭]
位于java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:219)
位于java.naming/com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2795)
位于java.naming/com.sun.jndi.ldap.LdapCtx.(LdapCtx.java:320)
位于java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192)
位于java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210)
位于java.naming/com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153)
位于java.naming/com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83)
位于java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730)
位于java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
位于java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
位于java.naming/javax.naming.InitialContext。(InitialContext.java:208)
位于java.naming/javax.naming.directory.InitialDirContext。(InitialDirContext.java:101)
位于auth.ldap.LdapConnection.testConnection(LdapConnection.java:41)
原因:java.net.SocketException:连接或出站已关闭
位于java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:976)
位于java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
位于java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
位于java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:398)
位于java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:371)
位于java.naming/com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:359)
位于java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:214)
... 还有15个
java.net.SocketException:连接或出站已关闭
位于java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:976)
位于java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
位于java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
位于java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:398)
位于java.naming/com.sun.jndi.ldap.Connection.writeRequest(Connection.java:371)
位于java.naming/com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:359)
位于java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:214)
位于java.naming/com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2795)
位于java.naming/com.sun.jndi.ldap.LdapC