如何配置Hibernate使用SSL与数据库服务器通信?

时间:2009-08-13 17:21:34

标签: java hibernate configuration

我有一个现有的java webapp,它使用Hibernate来实现它的持久性。我被告知我必须加密与数据库加密 - 所以我的第一个想法是设置它来通过SSL进行通信 - 并通过想出如何设置Oracle来通过SSL监听JDBC -

http://www.oracle.com/technology/tech/java/sqlj_jdbc/pdf/wp-oracle-jdbc_thin_ssl_2007.pdf

并编写了一个快速测试类来验证它是否已设置并正常工作(通过标准JDBC连接)。这让我遇到了配置Hibernate的问题 - 遗憾的是我没看到hibernate如何支持它?

4 个答案:

答案 0 :(得分:5)

Hibernate适用于标准的JDBC数据源,因此不需要特定于Hibernate的配置。

这是一个在使用Spring配置Hibernate时应该有效的快速示例:

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource">
    <property name="URL"><value><!-- JDBC URL that specifies SSL connection --></value></property>
    <!-- other relevant properties, like user and password -->
    <property name="connectionProperties>
        <value>
            oracle.net.ssl_cipher_suites: (ssl_rsa_export_with_rc4_40_md5, ssl_rsa_export_with_des40_cbc_sha)
            oracle.net.ssl_client_authentication: false
            oracle.net.ssl_version: 3.0
            oracle.net.encryption_client: REJECTED 
            oracle.net.crypto_checksum_client: REJECTED
        </value>
    </property>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <!-- classes etc -->
</bean>

答案 1 :(得分:4)

试试这个:

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://blablaba:8443/dbname?useSSL=true</property>
    <property name="hibernate.connection.verifyServerCertificate">false</property>
    <property name="hibernate.connection.requireSSL">true</property>
    <property name="hibernate.connection.autoReconnect">true</property>
    <property name="hibernate.connection.username">bablablab</property>
    <property name="hibernate.connection.password">clclclclc</property>

相关链接

http://www.razorsql.com/articles/mysql_ssl_jdbc.html

http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-using-ssl.html

http://www.javabeat.net/qna/164-hibernate-jdbc-and-connection-properties/

答案 2 :(得分:2)

请在Hibernate配置文件中添加以下属性以启用SSL:

<property name="hibernate.connection.verifyServerCertificate">false</property> <property name="hibernate.connection.useSSL">true</property>

答案 3 :(得分:1)

应由驱动程序处理,但您可能需要进行一些配置。 Oracle Docs