2009-08-13 2 views
9

Ho una webapp java esistente che usa Hibernate per la sua persistenza. Mi è stato detto che devo parlare con il DB crittografato - quindi il mio primo pensiero è configurarlo per fare la comunicazione via SSL - e ho capito come impostare Oracle per ascoltare JDBC su SSL -Come posso configurare Hibernate per utilizzare SSL per comunicare con il server DB?

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

e ho scritto una classe di test rapido per verificare che è stato installato e funzionante (collegamento via JDBC standard). Questo mi ha lasciato il problema di configurare Hibernate - sfortunatamente non vedo come lo supporta l'ibernazione?

+0

Tale nesso è morto, e credo che questa è la versione aggiornata: http://www.oracle.com/technetwork/topics/wp-oracle-jdbc-thin- ssl-130128.pdf – Jordan

risposta

5

Hibernate funziona con origini dati JDBC standard, quindi non è necessaria la configurazione specifica di Hibernate.

Ecco un esempio veloce che dovrebbe funzionare per la configurazione Hibernate con la Primavera:

<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

Tuttavia devo impostare alcune proprietà sul conducente - utilizzando JDBC posso solo fare questo: 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"); Tuttavia, come posso ottenere le proprietà associate al driver durante l'ibernazione? –

+0

Dipende da come si sta configurando Hibernate. Aggiungerò un esempio che puoi usare con Spring in un momento. – andri

+0

Se non si utilizza Spring, consultare la Tabella 3.4 dei documenti di Hibernate: http://docs.jboss.org/hibernate/stable/core/reference/en/html/session-configuration.html#configuration-optional - sebbene Non l'ho testato, sembra che tu possa passare le proprietà JDBC a Hibernate semplicemente aggiungendo le proprietà hibernate.connection. *. – andri

1

dovrebbe essere gestita dal driver, ma potrebbe essere necessario fare un po 'di configurazione. Oracle Docs

4

Prova questo:

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

link correlati

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

Si prega di aggiungere seguente in Hibernate confi file di configurazione per abilitare SSL:

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

+1

C'è qualcosa di nuovo in questa risposta che le altre risposte non hanno già detto? – pucky124

+0

Gli altri rispondono usati: ' true' Ma per il mio caso non ha funzionato.Devo usare il seguente per farlo funzionare: ' true' –