我尝试在JDBC driver上使用securityMechanism
选项设置Websphere Liberty®的TLS_CLIENT_CERTIFICATE_SECURITY
属性,引用以下IBM®知识中心,但获得{{3}我启动Websphere Liberty时的警告消息(2015年7月测试版)。
您能告诉我如何在Websphere Liberty上使用securityMechanism
选项设置JDBC驱动程序的TLS_CLIENT_CERTIFICATE_SECURITY
属性吗?
Websphere Liberty Server启动时用于JDBC和SQLJ的IBM®数据服务器驱动程序提供支持 客户端支持与DB2®连接的证书身份验证 适用于z /OS®版本10或更高版本的数据服务器。
console.log
CWWKG0032W: Unexpected value specified for property
[securityMechanism], value = [18]. >Expected value(s) are:
[3][4][7][9][11][12][13][15][16].
securityMechanism="18"
是TLS_CLIENT_CERTIFICATE_SECURITY
,我通过以下方式确认了该值:
\>javac -classpath .;db2jcc4.jar; JDBCCheck
\>java -classpath .;db2jcc4.jar; JDBCCheck
TLS_CLIENT_CERTIFICATE_SECURITY: 18
JDBCCheck 类:
class JDBCCheck{
public static void main(String args[]){
com.ibm.db2.jcc.DB2SimpleDataSource dataSource =
new com.ibm.db2.jcc.DB2SimpleDataSource();
System.out.println( "TLS_CLIENT_CERTIFICATE_SECURITY: "
+ dataSource.TLS_CLIENT_CERTIFICATE_SECURITY);
}
}
server.xml中:
<library id="db2-library">
<fileset dir="lib" id="db2-fileset" includes="db2jcc4.jar db2jcc_license_cu.jar"/>
</library>
<dataSource id="db2" jndiName="jdbc/sampledb">
<jdbcDriver libraryRef="db2-library"/>
<properties.db2.jcc databaseName="SAMPLEDB" password="password" portNumber="10443"
serverName="XX.XX.XX.XX" user="db2inst1" sslConnection="true"
sslTrustStoreLocation="ssld/defaultTrustStore"
sslTrustStorePassword="trustpassword" securityMechanism="18"/>
</dataSource>
更新01:
DB2 10.5FP1
。CWWKG0032W
而不是db2jcc4.jar
JCC属性properties
properties.db2.jcc
警告的情况下启动
答案 0 :(得分:2)
基于IBM®KnowledgeCenter中的此主题: Java EE Full Platform 7.0部分:交易&gt; dataSource&gt; properties.db2.jcc
目前,WebSphere Liberty仅支持securityMechanism的以下值:
如果您希望在Liberty中添加TLS_CLIENT_CERTIFICATE_SECURITY作为securityMechanism,我建议opening an RFE以便Liberty开发人员了解支持此功能的需求。
<强>更新强>
要解决此问题,您仍然可以指定securityMechanism =“18”,但只能在泛型&lt; properties&gt;中执行此操作。元素而不是db2 specific&lt; properties.db2.jcc&gt;元素(看起来你已经想到了)。
答案 1 :(得分:1)
设置TLS_CLIENT_CERTIFICATE_SECURITY
的另一种方法是:
com.ibm.db2.jcc.DB2SimpleDataSource dataSource = new
com.ibm.db2.jcc.DB2SimpleDataSource();
dataSource.setSecurityMechanism
(com.ibm.db2.jcc.DB2BaseDataSource.TLS_CLIENT_CERTIFICATE_SECURITY);
查看此IBM®知识中心以获取更多信息:
IBM Data Server Driver for JDBC and SQLJ support for certificate authentication
这应该适用于Websphere Full Profile和Websphere Liberty Profile。
答案 2 :(得分:1)
这里是用用户ID和加密的密码设置安全性机制以建立DB2连接的代码。传递用户名,密码和网址字符串。
Properties properties = new Properties(); // Create a Properties object
properties.put("user", user); // Set user ID for the connection
properties.put("password", password); // Set password for the connection
properties.put("securityMechanism",
new String("" +
DB2BaseDataSource.ENCRYPTED_USER_AND_PASSWORD_SECURITY +
""));
// Set security mechanism to
// user ID and encrypted password
properties.put("encryptionAlgorithm", "2");
Connection connection = DriverManager.getConnection("jdbc:db2://" + url, properties);