通过 SSL 连接 Informix JDBC

Connect Informix JDBC over SSL

我想用 SSL 连接我的 Spring JDBC 应用程序。 DBMS 是 Informix IBM。

我正在使用 spring-config.xml 文件,我在其中声明了数据源 bean:

<bean id="dataSource" class="com.sopra.datasource.CDataSource" init-method="init"
    destroy-method="close">
    <property name="url" value="${jdbc.url}" />
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="removeAbandoned" value="true" />
    <property name="initialSize" value="20" />
    <property name="maxActive" value="30" />
</bean>

非常感谢。

Mac

您是否与 Informix 服务器建立了基本的 SSL 连接,例如使用 dbaccess 工具?如果不是,您可能需要参考这篇 developerWorks 文章了解配置步骤:

https://www.ibm.com/developerworks/data/library/techarticle/dm-0912securesockets1/dm-0912securesockets1-pdf.pdf

本文使用 Informix 11.50,而我使用的是 12.10,它使用了更高版本的 IBM GSKit,因此我在文章使用 gsk7capicmd 的所有地方都替换了 gsk8capicmd_64 命令。

我不了解 Spring JDBC 所以我使用了一个基本的 JDBC 演示程序来测试 SSL 连接。该程序基于 Informix JDBC 驱动程序指南中列出的 "JDBC sample for SSL connection" 程序:

https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.jdbc_pg.doc/ids_jdbc_490.htm

以下是代码的一些相关摘录:

System.setProperty("javax.net.ssl.trustStore", "/home/keystore/keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
IfxConnectionPoolDataSource  cds =  new IfxConnectionPoolDataSource();
cds.setIfxIFXHOST("informix_hostname"");
cds.setServerName("informix_server");
cds.setPortNumber(port_number);
cds.setIfxSSLCONNECTION("true");
cds.setUser("informix");
cds.setPassword("password");
cds.setDatabaseName("stores_demo");

conn = cds.getPooledConnection().getConnection();

您可能还需要按照 Informix JDBC 驱动程序指南的加密选项部分所述配置 Java 加密扩展兼容的加密服务提供程序:

https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.jdbc_pg.doc/ids_jdbc_059.htm