我正在通过JDBC连接到一个运行在大型机上的DB2服务器。我需要建立加密连接!我需要通过网络实现数据的加密连接或加密。你能告诉我怎样才能达到同样的效果吗?
我已经与运行在linux上的Oracle服务器建立了加密连接,如链接here所示
发布于 2017-07-10 19:28:45
在db2 jdbc驱动程序中使用securityMechanism 13 (ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY)。例如,使用DB2SimpleDataSource:
import com.ibm.db2.jcc.DB2SimpleDataSource;
...
DB2SimpleDataSource ds = new DB2SimpleDataSource();
ds.setDriverType(4);
ds.setDatabaseName("<db name>");
ds.setServerName("<server name>");
ds.setPortNumber(<port>);
ds.setUser("<user>");
ds.setPassword("<password>");
// Set security mechanism to User ID and encrypted password
ds.setSecurityMechanism(DB2BaseDataSource.ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY);
ds.setEncryptionAlgorithm(2); // Request AES encryption要使其正常工作,需要使用JCE.jvm的无限制策略文件对进行修补。
发布于 2017-07-11 14:54:02
除了Ebbe的回答之外,您还可以对jdbc连接使用SSL/TLS -尽管这需要在服务器端做一些工作。特别是您的系统-人们必须为大型机的TCP堆栈设置AT-TLS,如果还没有为某些应用程序实现AT-TLS,这将是一项很大的工作。然后,您必须为DB2的jdbc-port定义一个使用SSL/TLS的策略。
最后,在客户端,您只需在jdbc-connection上设置一个属性来启用TLS:
java.util.Properties props = new java.util.Properties();
props.put( "user", user );
props.put( "password", pass );
props.put( "sslConnection", "true" );
java.sql.Connection con = java.sql.DriverManager.getConnection(url, props);详细说明可在this redpaper中找到。
发布于 2017-07-23 08:27:09
除了已经发布的答案之外,还有一个非常简单的解决方案,我很少看到有人提到-把你的连接从IPv4切换到IPv6。在它的许多其他属性中,IPv6包括在任何会话上的内置加密,所以仅仅将您的网络地址从IPv4地址更改为IPv6地址可能就是所需的全部。为此,需要在大型机上进行一些网络和系统配置,但设置完成后,可以保证所有JDBC网络连接在缺省情况下都是加密的。
https://stackoverflow.com/questions/45009585
复制相似问题