当前位置: 首页 > 知识库问答 >
问题:

如何在Liberty上使用TLS_CLIENT_CERTIFICATE_SECURITY选项设置JDBC驱动程序的安全机制属性?

唐钊
2023-03-14

我尝试在Webphere Liberty上使用TLS_CLIENT_CERTIFICATE_SECURITY选项设置JDBC驱动程序的security机制属性®参考以下IBM®知识中心,但在我启动Webphere Liberty(2015年7月测试版)时收到了CWWKG0032W警告消息

您能告诉我如何使用Websphere Liberty上的TLS\u CLIENT\u CERTIFICATE\u SECURITY选项设置JDBC驱动程序的安全机制属性吗?

IBM Data Server Driver for JDBC和SQLJ支持证书身份验证

用于JDBC和SQLJ的IBM®数据服务器驱动程序为连接到DB2®for z/OS®10或更高版本数据服务器的证书验证提供了客户端支持。

安慰Websphere Liberty Server启动时的日志

CWWKG0032W: Unexpected value specified for property
            [securityMechanism], value = [18]. >Expected value(s) are:
            [3][4][7][9][11][12][13][15][16].

security机制="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);
  }
}

服务器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驱动程序属性而不是DB2®JCC属性时,Websphere Liberty在没有CWWKG0032W警告的情况下启动。jcc

共有3个答案

羊时铭
2023-03-14

下面是使用用户id和加密密码设置安全机制以建立DB2连接的代码。传递用户名、密码和url字符串。

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);
龙高超
2023-03-14

另一种设置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和SQLJ支持证书身份验证

这应该适用于WebSphere完整配置文件和WebSphere Liberty配置文件。

张鸿宝
2023-03-14

基于IBM®知识中心:Java EE Full Platform 7.0部分:事务中的此主题

目前WebSphere Liberty仅支持安全机制的以下值:

  • value=“3”name=“CLEAR\u TEXT\u PASSWORD\u SECURITY”

如果您希望将TLS\u CLIENT\u CERTIFICATE\u SECURITY添加为Liberty中的安全机制,我建议您打开一个RFE,以便Liberty development了解支持此功能的需求。

更新:为了解决这个问题,您仍然可以指定securityMechanism=“18”,但只需在泛型中这样做

 类似资料:
  • 当我将mysql jdbc驱动程序复制到JDK的\jre\lib\ext时,它执行得非常好。现在,我想通过指定环境变量的类路径来使用jdbc。但是,这样做之后,我的程序抛出异常: “java.sql.SQLException:找不到适合jdbc的驱动程序:mysql://localhost/books" 如何设置类路径?

  • 我目前正在尝试使用C3P0作为我的JDBC连接池来设置Apache Ignite,但是我注意到由于Ignite驱动程序不支持事务,C3P0是不可用的。 有没有人幸运地用Ignite驱动程序获得了JDBC连接池?建议? 因此,如果我想建立一个JDBC连接池,我需要一个C3P0的替代方案;有什么建议吗?

  • 问题内容: 我需要测试与数据库的JDBC连接。执行此操作的Java代码应该很简单: 驱动程序管理器将为给定的连接URL查找合适的驱动程序。但是我需要能够在运行时加载JDBC驱动程序(jar)。即我在运行上面代码片段的Java应用程序的类路径上没有JDBC驱动程序。 因此,我可以使用以下代码加载驱动程序: 但是,由于我无法告诉它使用哪个类加载器,驱动程序管理器仍然不会选择它。我尝试设置当前线程的上下

  • 每当我试图使用ODBC驱动程序访问MDB文件时,它都会给我一个错误: 因此,我决定使用UCanAccess JDBC驱动程序。

  • 我使用datastax java驱动程序构造了一个select查询。我使用限制选项设置限制。但我看到另一个属性也可以设置 setFetchSize(int大小)

  • 问题内容: 我很难确定应该如何在我的debian 6.0服务器上为PostgreSQL安装JDBC驱动程序。我已将驱动程序.jar移至以下目录: 然后,教程讨论如何使用此代码: 但是,由于我是PostgreSQL的新手,所以我不知道应该把这行放在哪里,或者这是否正确。 我的问题是,除了将jar文件移动到此位置之外,为了在我的postgreSQL安装上安装JDBC驱动程序,我实际上需要做什么? 编辑