Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle Database TLS1.2 / SSL-Verbindung mit JDBC Thin und JKS

Hier sind die Schritte, die Sie befolgen müssen, um den Oracle JDBC Thin-Treiber so zu konfigurieren, dass er mit TLS v1.2 eine Verbindung zur Datenbank herstellt (vorausgesetzt, Ihre Datenbankkonfiguration ist korrekt).

Schritt 1:Patch für Fehler 19030178 anwenden (ab 12.2.0.1 nicht mehr erforderlich)

Sie müssen den Patch für Fehler 19030178 anwenden, der TLSv1.2 zulässt. Beachten Sie, dass der Patch TLSv1.2 zulässt, aber standardmäßig nicht aktiviert. Mit dem gepatchten Treiber 12.1.0.2 müssen Sie also auch oracle.net.ssl_version='1.2' setzen. Diese Eigenschaft kann entweder als Systemeigenschaft (mit -D) oder über die Datenquelleneigenschaften festgelegt werden.

Schritt 2:JCE-Dateien installieren

Ohne die Dateien der Java Cryptography Extension (JCE) werden die Strong Cipher Suites (z. B. TLS_RSA_WITH_AES_256_CBC_SHA256) nicht aktiviert. Unabhängig davon, ob Sie JDK7 oder JDK8 verwenden, sollten Sie die JCE Unlimited Strength Jurisdiction Policy Files installieren. Diese Dateien finden Sie auf der Oracle-Website.

Schritt 3:Verwenden Sie immer das neueste Update des JDK

Stellen Sie sicher, dass Sie das neueste Update von JDK7 oder JDK8 verwenden, da Fehler behoben wurden, die für TLSv1.2 erforderlich sind.

Schritt 4:Verwenden Sie JKS-Dateien anstelle von Wallets

Es sieht so aus, als hätten Sie das bereits getan, aber nur für andere:Wallets sind kompliziert zu konfigurieren und mit dem Oracle JDBC Thin Driver zu verwenden, da sie zusätzliche JAR-Dateien und zusätzliche Eigenschaften erfordern. JKS-Dateien hingegen werden von JRE nativ unterstützt und haben meiner Erfahrung nach immer gut funktioniert.

Schritt 5:Aktivieren Sie bei Verwendung von JDK7 explizit starke Verschlüsselungssammlungen

Dieser Schritt ist bei Verwendung von JDK8 nicht erforderlich. Wenn Sie mit JDK7 eine starke Cipher Suite wie TLS_RSA_WITH_AES_256_CBC_SHA256 verwenden, müssen Sie diese über die Verbindungseigenschaft oracle.net.ssl_cipher_suites aktivieren.

Schritt 6:Debuggen Sie mit -Djavax.net.debug=all

Wenn Sie schließlich auf weitere Probleme stoßen, können Sie mit -Djavax.net.debug=all.

die Ablaufverfolgung aktivieren, um herauszufinden, was vor sich geht

====BEISPIEL MIT JDK7 UND DEM 12.1.0.2 PATCHED THIN TREIBER =====

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'

====BEISPIEL MIT JDK8 UND DEM 12.1.0.2 PATCHED THIN TREIBER =====

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'