ssl - 如何使用 Liberty 上的 TLS_CLIENT_CERTIFICATE_SECURITY 选项设置 JDBC 驱动程序的 securityMechanism 属性?

标签 ssl jdbc db2 websphere-liberty custom-properties

我尝试设置 JDBC driversecurityMechanism 属性与 Websphere Liberty® 上的 TLS_CLIENT_CERTIFICATE_SECURITY 选项引用以下 IBM® 知识中心,但得到一个 CWWKG0032W当我启动 Websphere Liberty(2015 年 7 月测试版)时出现警告消息。

你能告诉我如何在 Websphere Liberty 上使用 TLS_CLIENT_CERTIFICATE_SECURITY 选项设置 JDBC 驱动程序的 securityMechanism 属性吗?

IBM Data Server Driver for JDBC and SQLJ support for certificate authentication

The IBM® Data Server Driver for JDBC and SQLJ provides support for client support for certificate authentication for connections to DB2® for z/OS® Version 10 or later data servers.

console.log Websphere Liberty 服务器启动时

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:

  • > db2jcc4.jar级别/版本是 DB2 10.5FP1
  • 当我使用通用 JDBC 驱动程序属性 properties 而不是 DB2® 时,Websphere Liberty 在没有 CWWKG0032W 警告的情况下启动JCC 属性 properties.db2.jcc

最佳答案

基于 IBM® 知识中心中的这个主题: Java EE Full Platform 7.0部分:事务 > 数据源 > properties.db2.jcc

目前 WebSphere Liberty 仅支持以下 securityMechanism 值:

  • value="3"name="CLEAR_TEXT_PASSWORD_SECURITY"
  • value="4"name="USER_ONLY_SECURITY"
  • value="7"name="ENCRYPTED_PASSWORD_SECURITY"
  • value="9"name="ENCRYPTED_USER_AND_PASSWORD_SECURITY"
  • value="11"name="KERBEROS_SECURITY"
  • value="12"name="ENCRYPTED_USER_AND_DATA_SECURITY"
  • value="13"name="ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY"
  • value="15"name="PLUGIN_SECURITY"
  • value="16"name="ENCRYPTED_USER_ONLY_SECURITY"

如果您想在 Liberty 中添加 TLS_CLIENT_CERTIFICATE_SECURITY 作为安全机制,我建议 opening an RFE以便 Liberty 开发意识到支持这一点的需求。

更新:
要解决此问题,您仍然可以指定 securityMechanism="18",但只需在通用 元素中指定,而不是 db2 特定的 元素(看起来您已经知道了) ).

关于ssl - 如何使用 Liberty 上的 TLS_CLIENT_CERTIFICATE_SECURITY 选项设置 JDBC 驱动程序的 securityMechanism 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31106143/

相关文章:

c++ - "400 Bad request"使用 OpenSSL BIO 请求时

java - oracle 数据库中的连接未关闭

java - 错误 : java. sql.SQLSyntaxErrorException:用户缺乏权限或未找到对象:ACCOUNTS

sql - 使用 JOIN 更新表

sql - 使用 squirrel 的 SQL 中的 DB2 存储过程。无法循环播放

android - 获取即时证书并禁用证书检查后,仍然获取未找到证书路径的信任 anchor

android - SSL:- 以编程方式验证服务器证书的到期日期 Android

mysql - 如何以兼容的方式定义日期间隔?

node.js - 如何查看 NodeJS SSL 协商结果

java - 运行 JDBC 嵌入式驱动程序 java.sql.SQLSyntaxerrorException 时出错