2009-08-13 9 views
9

Mam istniejącą aplikację webową Java, która używa Hibernacji do jej trwałości. Powiedziano mi, że muszę rozmawiać z DB zaszyfrowaną - więc moją pierwszą myślą było skonfigurowanie go do komunikacji za pośrednictwem protokołu SSL - i przezorałem się, jak skonfigurować Oracle, aby słuchał JDBC przez SSL -Jak skonfigurować Hibernate, aby używać protokołu SSL do komunikowania się z serwerem bazy danych?

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

i napisał krótki klasę testową, aby sprawdzić, że to był ustawiony i działa (poprzez podłączenie standardowego JDBC). Pozostawiło mi to problem konfiguracji Hibernate - niestety nie widzę, jak obsługuje go hibernacja?

+0

Ten link jest martwy, i wierzę, że jest to zaktualizowana wersja: http://www.oracle.com/technetwork/topics/wp-oracle-jdbc-thin- ssl-130128.pdf – Jordan

Odpowiedz

5

Hibernate działa ze standardowymi źródłami danych JDBC, więc nie ma potrzeby konfigurowania specyficznego dla Hibernacji.

Oto prosty przykład, który powinien działać przy konfiguracji Hibernate z wiosny:

<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

jednak muszę ustawić niektóre właściwości na kierowcę - przy użyciu JDBC może po prostu to zrobić: rekwizyt .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"); Jak jednak uzyskać te właściwości powiązane ze sterownikiem przez hibernację? –

+0

To zależy od konfiguracji Hibernate. Dodam przykład, którego możesz użyć ze Springem za chwilę. – andri

+0

Jeśli nie używasz Spring, zobacz tabelę 3.4 dokumentacji Hibernacji: http://docs.jboss.org/hibernate/stable/core/reference/en/html/session-configuration.html#configuration-optional - chociaż Nie przetestowałem tego, wydaje się, że możesz przekazać właściwości JDBC do Hibernate, tylko przez dodanie właściwości hibernate.connection. *. – andri

1

powinny być obsługiwane przez kierowcę, ale być może trzeba będzie zrobić kilka konfiguracji. Oracle Docs

4

Spróbuj tego:

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

powiązane linki

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

proszę dodać następującą właściwość w hibernacji konfi Plik guracji włączyć SSL:

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

+1

Czy jest coś nowego w tej odpowiedzi, że inne odpowiedzi jeszcze nie powiedziały? – pucky124

+0

Pozostali odpowiedź używane: ' true' Ale moim przypadku to nie zadziałało.Aby go uruchomić, muszę użyć następującego polecenia: ' true' –

Powiązane problemy