While connecting to the SAS via JDBC driver, we are getting below error:
com.sas.rio.MVASQLException: Unable to establish connection. An exception was thrown during the encryption key exchange.
"java.io.EOFException: null
at com.sas.net.crypto.jce.JceCipher$BasePhase.recv(JceCipher.java:636) ~[APP.jar:?]
at com.sas.net.crypto.jce.JceCipher$SizePhase.transmit(JceCipher.java:691) ~[APP.jar:?]
at com.sas.net.crypto.jce.JceCipher.keyExchange(JceCipher.java:81) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine.handleStatus(Engine.java:5014) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine0200.flowSendReqs(Engine0200.java:188) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine.flow(Engine.java:720) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine.initClient(Engine.java:681) ~[APP.jar:?]
at com.sas.iom.orb.brg.ORBImpl.uri_to_object(ORBImpl.java:114) ~[APP.jar:?]
at com.sas.services.connection.ClusterEnvelope.createObject(ClusterEnvelope.java:395) ~[APP.jar:?]
at com.sas.services.connection.ClusterEnvelope.getConnection(ClusterEnvelope.java:87) ~[APP.jar:?]
at com.sas.services.connection.AggregationKernel.doGetConnection(AggregationKernel.java:242) ~[APP.jar:?]
at com.sas.services.connection.ConnectionFactoryKernel.getConnection(ConnectionFactoryKernel.java:325) ~[APP.jar:?]
at com.sas.services.connection.ConnectionFactoryShell.getConnection(ConnectionFactoryShell.java:69) ~[APP.jar:?]
at com.sas.services.connection.ConnectionFactoryShell.getConnection(ConnectionFactoryShell.java:51) ~[APP.jar:?]
at com.sas.rio.RIOUtil.getWorkspace(RIOUtil.java:1881) ~[APP.jar:?]
at com.sas.rio.RIOUtil.<init>(RIOUtil.java:304) ~[APP.jar:?]
at com.sas.rio.MVAConnection.<init>(MVAConnection.java:254) ~[APP.jar:?]
at com.sas.rio.MVADriver.connect(MVADriver.java:280)
Additional info:
Can you please let us know what could be the issue here?
@gwootton After upgrading to JDBC driver 94290, we are getting similar error:
"message":"An exception was thrown during the encryption key exchange.","name":"com.sas.services.connection.FatalConnectionFactoryException","cause":{"commonElementCount":16,"localizedMessage":"An exception was thrown during the encryption key exchange.","message":"An exception was thrown during the encryption key exchange.","name":"org.omg.CORBA.COMM_FAILURE","cause":{"commonElementCount":16,"name":"java.io.EOFException","extendedStackTrace":"java.io.EOFException: null
at com.sas.net.crypto.jce.JceCipher$BasePhase.recv(JceCipher.java:636) ~[APP.jar:?]
at com.sas.net.crypto.jce.JceCipher$SizePhase.transmit(JceCipher.java:691) ~[APP.jar:?]
at com.sas.net.crypto.jce.JceCipher.keyExchange(JceCipher.java:81) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine.handleStatus(Engine.java:5015) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine0200.flowSendReqs(Engine0200.java:188) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine.flow(Engine.java:721) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine.initClient(Engine.java:682) ~[APP.jar:?]
at com.sas.iom.orb.brg.ORBImpl.uri_to_object(ORBImpl.java:114) ~[APP.jar:?]
at com.sas.services.connection.ClusterEnvelope.createObject(ClusterEnvelope.java:395) ~[APP.jar:?]
at com.sas.services.connection.ClusterEnvelope.getConnection(ClusterEnvelope.java:87) ~[APP.jar:?]
at com.sas.services.connection.AggregationKernel.doGetConnection(AggregationKernel.java:242) ~[APP.jar:?]
at com.sas.services.connection.ConnectionFactoryKernel.getConnection(ConnectionFactoryKernel.java:325) ~[APP.jar:?]
at com.sas.services.connection.ConnectionFactoryShell.getConnection(ConnectionFactoryShell.java:69) ~[APP.jar:?]
at com.sas.services.connection.ConnectionFactoryShell.getConnection(ConnectionFactoryShell.java:51) ~[APP.jar:?]
at com.sas.rio.RIOUtil.getWorkspace(RIOUtil.java:1882) ~[APP.jar:?]
at com.sas.rio.RIOUtil.<init>(RIOUtil.java:305) ~[APP.jar:?]
at com.sas.rio.MVAConnection.<init>(MVAConnection.java:256) ~[APP.jar:?]
at com.sas.rio.MVADriver.connect(MVADriver.java:289) ~[APP.jar:?]
at com.mycom.jdbcSasConnection.createConnectionWithUsernamePasswordAuth(SasConnection.java:95) ~[APP.jar:?]
at com.mycom.jdbcSasConnection.connect(SasConnection.java:68) ~[APP.jar:?]
at com.mycom.datasource.SasDatasource.validate(SasDatasource.java:153) ~[APP.jar:?]\n"},"extendedStackTrace":"org.omg.CORBA.COMM_FAILURE: An exception was thrown during the encryption key exchange.
at com.sas.iom.orb.brg.Engine.handleStatus(Engine.java:5023) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine0200.flowSendReqs(Engine0200.java:188) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine.flow(Engine.java:721) ~[APP.jar:?]
at com.sas.iom.orb.brg.Engine.initClient(Engine.java:682) ~[APP.jar:?]
at com.sas.iom.orb.brg.ORBImpl.uri_to_object(ORBImpl.java:114) ~[APP.jar:?]
at com.sas.services.connection.ClusterEnvelope.createObject(ClusterEnvelope.java:395) ~[APP.jar:?]
at com.sas.services.connection.ClusterEnvelope.getConnection(ClusterEnvelope.java:87) ~[APP.jar:?]
at com.sas.services.connection.AggregationKernel.doGetConnection(AggregationKernel.java:242) ~[APP.jar:?]
at com.sas.services.connection.ConnectionFactoryKernel.getConnection(ConnectionFactoryKernel.java:325) ~[APP.jar:?]
at com.sas.services.connection.ConnectionFactoryShell.getConnection(ConnectionFactoryShell.java:69) ~[APP.jar:?]
at com.sas.services.connection.ConnectionFactoryShell.getConnection(ConnectionFactoryShell.java:51) ~[APP.jar:?]
at com.sas.rio.RIOUtil.getWorkspace(RIOUtil.java:1882) ~[APP.jar:?]
at com.sas.rio.RIOUtil.<init>(RIOUtil.java:305) ~[APP.jar:?]
at com.sas.rio.MVAConnection.<init>(MVAConnection.java:256) ~[APP.jar:?]
at com.sas.rio.MVADriver.connect(MVADriver.java:289) ~[APP.jar:?]
at com.mycom.jdbcSasConnection.createConnectionWithUsernamePasswordAuth(SasConnection.java:95) ~[APP.jar:?]
at com.mycom.jdbcSasConnection.connect(SasConnection.java:68) ~[APP.jar:?]
at com.mycom.datasource.SasDatasource.validate(SasDatasource.java:153) ~[APP.jar:?]\nCaused by: java.io.EOFException
We have put those JARs in classpath in the client(where we are using JDBC driver), but we were getting a different error, I have asked customer to provide logs to know the exact error.
Meanwhile, can you please let us know if we need to put these 3 JARs in client only(the app which is using JDBC driver)? We observed that, customer's IT team was unable to locate these 3 JARs in SAS deployment "/<sas_home>/SASVersionedJarRepository/eclipse/plugins/", they found only "sas.rutil.nls.jar" file. Should the deployment must contain these 3 JARs? (Customer is on SAS 9.4)
The SAS Users Group for Administrators (SUGA) is open to all SAS administrators and architects who install, update, manage or maintain a SAS deployment.
Learn how to explore data assets, create new data discovery agents, schedule data discovery agents, and much more.
Find more tutorials on the SAS Users YouTube channel.