2009-08-13 10 views
9

J'ai une webapp java existante qui utilise Hibernate pour sa persistance. On m'a dit que je devais avoir à parler à la base de données cryptée - donc ma première pensée est de le configurer pour faire la communication via SSL - et j'ai compris comment configurer Oracle pour écouter JDBC via SSL -Comment configurer Hibernate pour utiliser SSL pour communiquer avec le serveur de base de données?

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

et a écrit une classe de test rapide pour vérifier qu'il a été installé et le travail (connexion via JDBC standard). Cela m'a laissé avec le problème de la configuration de Hibernate - malheureusement, je ne vois pas comment Hibernate le supporte?

+0

Ce lien est mort, et je crois que c'est la version mise à jour: http://www.oracle.com/technetwork/topics/wp-oracle-jdbc-thin- ssl-130128.pdf – Jordan

Répondre

5

Hibernate fonctionne avec des sources de données JDBC standard, il n'y a donc pas besoin de configuration spécifique à Hibernate.

Voici un exemple rapide qui devrait fonctionner lors de la configuration Hibernate avec Spring:

<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> 
+0

Cependant, je dois définir certaines propriétés du pilote - en utilisant JDBC je peux faire ceci: prop .setProperty ("oracle.net.ssl_cipher_suites", "(ssl_rsa_export_with_rc4_40_md5, ssl_rsa_export_with_des40_cbc_sha)"); prop.setProperty ("oracle.net.ssl_client_authentication", "false"); prop.setProperty ("oracle.net.ssl_version", "3.0"); prop.setProperty ("oracle.net.encryption_client", "REJECTED"); prop.setProperty ("oracle.net.crypto_checksum_client", "REJECTED"); Cependant, comment puis-je obtenir les propriétés associées au pilote via Hibernate? –

+0

Cela dépend de la façon dont vous configurez Hibernate. Je vais ajouter un exemple que vous pouvez utiliser avec Spring dans un instant. – andri

+0

Si vous n'utilisez pas Spring, consultez le Tableau 3.4 des documents Hibernate: http://docs.jboss.org/hibernate/stable/core/reference/en/html/session-configuration.html#configuration-optional - bien que Je ne l'ai pas testé, il semble que vous pouvez passer les propriétés JDBC à Hibernate en ajoutant simplement les propriétés hibernate.connection. *. – andri

1

doit être manipulé par le conducteur, mais vous pouvez avoir à faire une configuration. Oracle Docs

4

Essayez ceci:

<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> 

liens connexes

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

S'il vous plaît ajouter propriété suivante dans Hibernate confi fichier guration pour activer SSL:

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

+1

Y a-t-il quelque chose de nouveau dans cette réponse que les autres réponses n'ont pas déjà dit? – pucky124

+0

Les autres répondent utilisés: ' true' Mais pour mon cas, il n'a pas travaillé.Je dois utiliser suivant pour le faire fonctionner: ' true' –

Questions connexes