Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将Hibernate配置为使用SSL与DB服务器通信?_Java_Hibernate_Configuration - Fatal编程技术网

Java 如何将Hibernate配置为使用SSL与DB服务器通信?

Java 如何将Hibernate配置为使用SSL与DB服务器通信?,java,hibernate,configuration,Java,Hibernate,Configuration,我有一个现有的JavaWebApp,它使用Hibernate进行持久化。有人告诉我,我必须与加密的DB进行对话——因此我的第一个想法是将其设置为通过SSL进行通信——并研究了如何设置Oracle通过SSL监听JDBC- http://www.oracle.com/technology/tech/java/sqlj_jdbc/pdf/wp-oracle-jdbc_thin_ssl_2007.pdf 并编写了一个快速测试类来验证它是否已设置并正在工作(通过标准JDBC连接)。这就给我留下了配置Hi

我有一个现有的JavaWebApp,它使用Hibernate进行持久化。有人告诉我,我必须与加密的DB进行对话——因此我的第一个想法是将其设置为通过SSL进行通信——并研究了如何设置Oracle通过SSL监听JDBC-

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


并编写了一个快速测试类来验证它是否已设置并正在工作(通过标准JDBC连接)。这就给我留下了配置Hibernate的问题——不幸的是,我不知道Hibernate是如何支持它的

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>


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

试试这个:

    <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>
org.hibernate.dialent.mysqlinnodbdialent
com.mysql.jdbc.Driver
jdbc:mysql://blablaba:8443/dbname?useSSL=true
假的
真的
真的
巴巴拉布
CLCLCLC
相关链接


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

false

true

但是我必须在驱动程序上设置一些属性-使用JDBC我可以做到这一点:prop.setProperty(“oracle.net.ssl\u cipher\u suites”,“(ssl\u rsa\u export\u with_rc4\u 40\u md5,ssl\u rsa\u export\u with_des40\u cbc\u sha)”;prop.setProperty(“oracle.net.ssl_client_authentication”,“false”);prop.setProperty(“oracle.net.ssl_版本”,“3.0”);prop.setProperty(“oracle.net.encryption_客户端”,“已拒绝”);prop.setProperty(“oracle.net.crypto_checksum_client”,“已拒绝”);但是,如何通过hibernate获取与驱动程序关联的属性?这取决于您如何配置hibernate。稍后我将添加一个可以与Spring一起使用的示例。如果您不使用Spring,请参阅Hibernate文档中的表3.4:-虽然我还没有测试它,但似乎您可以通过添加Hibernate.connection.*properties将JDBC属性传递给Hibernate,我相信这是最新的版本:这个答案中是否有其他答案没有提到的新内容?其他答案使用:
true
,但对我来说,它不起作用。我必须使用以下方法才能使其正常工作:
true
我尝试了您的配置,但它没有给我任何效果。