首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加密的jdbc连接到大型机上的db2

加密的jdbc连接到大型机上的db2
EN

Stack Overflow用户
提问于 2017-07-10 18:23:10
回答 4查看 1.7K关注 0票数 0

我正在通过JDBC连接到一个运行在大型机上的DB2服务器。我需要建立加密连接!我需要通过网络实现数据的加密连接或加密。你能告诉我怎样才能达到同样的效果吗?

我已经与运行在linux上的Oracle服务器建立了加密连接,如链接here所示

EN

回答 4

Stack Overflow用户

发布于 2017-07-10 19:28:45

在db2 jdbc驱动程序中使用securityMechanism 13 (ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY)。例如,使用DB2SimpleDataSource:

代码语言:javascript
复制
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的无限制策略文件对进行修补。

票数 3
EN

Stack Overflow用户

发布于 2017-07-11 14:54:02

除了Ebbe的回答之外,您还可以对jdbc连接使用SSL/TLS -尽管这需要在服务器端做一些工作。特别是您的系统-人们必须为大型机的TCP堆栈设置AT-TLS,如果还没有为某些应用程序实现AT-TLS,这将是一项很大的工作。然后,您必须为DB2的jdbc-port定义一个使用SSL/TLS的策略。

最后,在客户端,您只需在jdbc-connection上设置一个属性来启用TLS:

代码语言:javascript
复制
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中找到。

票数 0
EN

Stack Overflow用户

发布于 2017-07-23 08:27:09

除了已经发布的答案之外,还有一个非常简单的解决方案,我很少看到有人提到-把你的连接从IPv4切换到IPv6。在它的许多其他属性中,IPv6包括在任何会话上的内置加密,所以仅仅将您的网络地址从IPv4地址更改为IPv6地址可能就是所需的全部。为此,需要在大型机上进行一些网络和系统配置,但设置完成后,可以保证所有JDBC网络连接在缺省情况下都是加密的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45009585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档