Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle Database TLS1.2 / połączenie SSL przy użyciu JDBC thin i JKS

Oto kroki, które należy wykonać, aby skonfigurować cienki sterownik Oracle JDBC do łączenia się z bazą danych przy użyciu protokołu TLS v1.2 (zakładając, że konfiguracja bazy danych jest poprawna).

Krok 1:Zastosuj poprawkę na błąd 19030178 (nie jest potrzebny od 12.2.0.1)

Będziesz musiał zastosować łatkę na błąd 19030178, która pozwala na TLSv1.2. Zauważ, że łatka zezwala na TLSv1.2, ale domyślnie go nie włącza. Tak więc z poprawionym sterownikiem 12.1.0.2 musisz również ustawić oracle.net.ssl_version='1.2'. Właściwość tę można ustawić jako właściwość systemową (za pomocą -D) ​​lub poprzez właściwości źródła danych.

Krok 2:Zainstaluj pliki JCE

Bez plików Java Cryptography Extension (JCE) silne zestawy szyfrów (na przykład TLS_RSA_WITH_AES_256_CBC_SHA256) nie będą włączone. Niezależnie od tego, czy używasz JDK7, czy JDK8, powinieneś zainstalować pliki JCE Unlimited Strength Jurisdiction Policy Files. Pliki te można znaleźć na stronie Oracle.

Krok 3:Zawsze używaj najnowszej aktualizacji JDK

Pamiętaj, aby użyć najnowszej aktualizacji JDK7 lub JDK8, ponieważ zostały naprawione błędy wymagane dla TLSv1.2.

Krok 4:Użyj plików JKS zamiast portfeli

Wygląda na to, że już to zrobiłeś, ale tylko dla innych:konfigurowanie i używanie portfeli z cienkim sterownikiem Oracle JDBC jest skomplikowane, ponieważ wymagają dodatkowych plików jar i dodatkowych właściwości. Z drugiej strony pliki JKS są obsługiwane natywnie w JRE i, z mojego doświadczenia, zawsze działały dobrze.

Krok 5:Korzystając z JDK7, włącz silne zestawy szyfrów

Ten krok nie jest wymagany w przypadku korzystania z JDK8. W przypadku JDK7, jeśli używasz silnego zestawu szyfrów, takiego jak TLS_RSA_WITH_AES_256_CBC_SHA256, musisz go włączyć za pomocą właściwości połączenia oracle.net.ssl_cipher_suites.

Krok 6:Debuguj za pomocą -Djavax.net.debug=all

Wreszcie, jeśli napotkasz więcej problemów, możesz włączyć śledzenie, aby dowiedzieć się, co się dzieje przy użyciu -Djavax.net.debug=all.

====PRZYKŁAD Z JDK7 I ZAŁATOWANYM CIENKIM STEROWNIKIEM 12.1.0.2 =====

java  -Doracle.net.ssl_version='1.2' -Doracle.net.ssl_cipher_suites='(TLS_RSA_WITH_AES_256_CBC_SHA256)' -Doracle.net.ssl_server_dn_match='true' -Djavax.net.ssl.trustStore='truststore.jks' -Djavax.net.ssl.trustStorePassword='welcome1' -Djavax.net.ssl.keyStore='keystore.jks' -Djavax.net.ssl.keyStorePassword='welcome1'  JDBCTest 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=myservice))(security=(ssl_server_cert_dn="CN=name,O=org,L=city,ST=state,C=country")))' 'pdb1' 'welcome1'

====PRZYKŁAD Z JDK8 I ZŁATANYM CIENKIM STEROWNIKIEM 12.1.0.2 =====

java -Doracle.net.ssl_version='1.2' -Doracle.net.ssl_server_dn_match='true' -Djavax.net.ssl.trustStore='truststore.jks' -Djavax.net.ssl.trustStorePassword='welcome1' -Djavax.net.ssl.keyStore='keystore.jks' -Djavax.net.ssl.keyStorePassword='welcome1'  JDBCTest 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=myservice))(security=(ssl_server_cert_dn="CN=name,O=org,L=city,ST=state,C=country")))' 'pdb1' 'welcome1'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obsługa współbieżnego żądania podczas utrwalania w bazie danych Oracle?

  2. ORA-22905 - podczas zapytania o typ tabeli za pomocą instrukcji SELECT

  3. Funkcja ASCII() w Oracle

  4. Data Oracle — jak dodać lata do daty?

  5. Używanie `SELECT` do wywołania funkcji