我想将我的Spring JDBC应用程序与SSL连接。 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>


非常感谢。

苹果电脑

最佳答案

您是否已与工作的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驱动程序指南》中列出的“用于SSL连接的JDBC示例”程序:

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

10-06 09:13
查看更多