SuzanneZurich Respected Contributor.
Respected Contributor.
921 views

(OO) Support Tip: I/O Error: DB server closed connection and SSL encryption

Customer is using SQL Query All Rows operation (/Library/Operations/Databases/JDBC/).

Customer is trying to make a connection to MSSQL that has SSL required set but it keeps failing with the following error:
MSSQL requires ssl only connections.
{Result=I/O Error: DB server closed connection.;returnResult=I/O Error: DB server closed connection.;returnCode=-1;sessionId=iconclude8399935972858347959;exception=java.sql.SQLException: I/O Error: DB server closed connection. at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2307) at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:602) at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:344) at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50) at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.iconclude.content.actions.sql.dbconnection.DBConnectionManager.getPlainConnection(DBConnectionManager.java:626) at com.iconclude.content.actions.sql.dbconnection.DBConnectionManager.getConnection(DBConnectionManager.java:230) at com.iconclude.content.actions.sql.SQL.getConnection(SQL.java:1102) at com.iconclude.content.actions.sql.SQL.execQuery(SQL.java:619) at com.iconclude.content.actions.sql.SQLQueryAllRows.execute(SQLQueryAllRows.java:86) at com.iconclude.webservices.ras.classLoadedIaction.execute(JavaExtensionService.java:578) at com.iconclude.webservices.ras.JavaExtensionService.executeFromThisDelegator(JavaExtensionService.java:260) at com.iconclude.webservices.ras.ExtensionServiceDelegator.execute(ExtensionServiceDelegator.java:58) at com.iconclude.webservices.ras.RCAgentServiceSoapBindingImpl.execute(RCAgentServiceSoapBindingImpl.java:48) at com.iconclude.webservices.ras.RCAgentServiceSoapBindingSkeleton.execute(RCAgentServiceSoapBindingSkeleton.java:238) at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1124) at org.acegisecurity.securechannel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:138) at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98) at com.iconclude.dharma.commons.util.http.DharmaFilterToBeanProxy.doFilter(DharmaFilterToBeanProxy.java:72) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:361) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:879) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:741) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:207) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522) Caused by: java.io.IOException: DB server closed connection. at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:843) at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:722) at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466) at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103) at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2202) ... 53 more state:08S01;}

Enhancement request QCCR8C28741 Add input to allow SSL encryption in Operations/Database/Microsoft SQL operations has been submitted for version 9.07.  This is currently not supported. 

If ForceEncryption is set to no, the operation will complete successfully.  However due to security concerns, the customer is not able to use this option.

How to resolve?

A hotfix in the form of a content pack was provided to the customer.

Some things to consider when using SSL encryption using Windows authentication mode:
A .dll file must be provided in order to configure Windows authentication mode. That .dll file can be found inside the Microsoft SQL JDBC Driver archive.
The SQL JDBC Driver can be found at the following URL: https://www.microsoft.com/en-us/download/confirmation.aspx?id=11774.
After downloading and extracting the driver, at the following path: 'Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_6.0\enu\auth' there are 2 folders containing the necessary sqljdbc_auth.dll files for x64 and x86 configurations.
If using Windows authentication, the path to the folder containing that .dll should be provided in the authLibraryPath input of each flow.

For sql authentication mode, there is no need for such configurations.
The hotfix will be included in a feature content pack.  Additionally, when requested a hot fix will be provided to customers.

Please contact Technical Support if you have any questions.

Please see the knowledge document at https://softwaresupport.hpe.com/km/KM02847456

Labels (1)
0 Likes
The opinions expressed above are the personal opinions of the authors, not of Micro Focus. By using this site, you accept the Terms of Use and Rules of Participation. Certain versions of content ("Material") accessible here may contain branding from Hewlett-Packard Company (now HP Inc.) and Hewlett Packard Enterprise Company. As of September 1, 2017, the Material is now offered by Micro Focus, a separately owned and operated company. Any reference to the HP and Hewlett Packard Enterprise/HPE marks is historical in nature, and the HP and Hewlett Packard Enterprise/HPE marks are the property of their respective owners.