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'