JDBC Thin-Verbindungen mit einem Wallet (mTLS)

Autonomous Database erfordert eine sichere Verbindung, die Transport Layer Security (TLSv1.2) verwendet. Je nach Netzwerkkonfigurationsoptionen unterstützt Autonomous Database die mTLS- und TLS-Authentifizierung.

Hinweis

Wenn Sie TLS anstelle von mTLS für Ihre Verbindungen mit JDBC Thin-Treiber mit JDK8u162 oder höher verwenden, ist kein Wallet erforderlich. TLS-Verbindungen sind für die folgenden Netzwerkkonfigurationen aktiviert:


  • Nur Zugriff über privaten Endpunkt: Netzwerkkonfiguration mit einem privaten Endpunkt

  • Sicherer Zugriff nur von zulässigen IPs und VCNs: Konfiguration mit einer Access-Control-Liste (ACL)

    Wenn sich Ihre Autonomous Database-Datenbank auf einem öffentlichen Endpunkt ohne ACL befindet, können Sie 0.0.0.0/0 als CIDR-ACL hinzufügen und die TLS-Authentifizierung aktivieren. Das Hinzufügen von 0.0.0.0/0 als CIDR-ACL entspricht der Verwendung von Autonomous Database am öffentlichen Endpunkt ohne ACL.

Weitere Informationen finden Sie unter Sichere Verbindungen zu Autonomous Database mit mTLS oder mit TLS.

Voraussetzungen für JDBC Thin-Treiberverbindungen mit Wallets (mTLS)

Anwendungen, die JDBC Thin-Treiber verwenden, unterstützen die TLS- und mTLS-Authentifizierung. Bei der Verwendung der mTLS-Authentifizierung müssen Sie Oracle-Datenbankzugangsdaten einschließlich der Oracle Wallets oder Java KeyStore (JKS)-Dateien angeben, wenn Sie eine Verbindung zur Datenbank herstellen.

Vor der Anmeldung bei der Datenbank gehen Sie wie folgt vor:

  1. Autonomous Database bereitstellen: Erstellen Sie eine Datenbank, und rufen Sie Ihre Datenbankzugangsdaten (Benutzername und Kennwort) ab.

    Weitere Informationen finden Sie unter Autonomous Database-Instanz bereitstellen.

  2. Bei gegenseitigen TLS-Verbindungen müssen Sie die Clientzugangsdaten herunterladen: Dekomprimieren Sie den wallet_databasename.zip an einem sicheren Speicherort. Prüfen Sie, ob nur autorisierte Benutzer auf diese Dateien zugreifen können.

    Informationen zum Herunterladen von Clientzugangsdaten für Autonomous Database finden Sie unter Clientzugangsdaten (Wallets) herunterladen.

  3. JDK-Version auf Sicherheit prüfen: Wenn Sie JDK11, JDK10 oder JDK9 verwenden, ist dieser Schritt nicht erforderlich. Wenn Ihre JDK-Version niedriger als JDK8u162 ist, müssen Sie die Dateien für die JCE Unlimited Strength Jurisdiction Policy herunterladen. Hinweise zur Installation finden Sie in der README-Datei. Laden Sie die JCE-Dateien von der Downloadseite für Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 herunter.
  4. JDBC-Treiberversion prüfen: Laden Sie einen unterstützten JDBC Thin-Treiber herunter (ojdbc8.jar und ucp.jar). Außerdem benötigen Sie die zusätzlichen JAR-Dateien oraclepki.jar, osdt_core.jar und osdt_cert.jar für die Verwendung mit Oracle Wallets.

    Folgende Versionen werden unterstützt:

    • JDBC Thin: 11.2.0.4 (oder höher mit One-off-Patch für Bug 28492769), 12.2 (oder höher mit One-off-Patch für Bug 28492769), 18 (Basisrelease oder höher mit One-off-Patch für Bug 28492769), 19 (Basisrelease oder höher) oder 21 (Basisrelease oder höher)

    Für Anwendungen, die das Universal Connection Pool-(UCP-)Feature von JDBC verwenden, wird dringend empfohlen, die JDBC-Treiberversion 19.13 oder höher oder 21.3 oder höher zu verwenden. Diese Versionen umfassen ein ordnungsgemäßes Draining-Verhalten, um die Auswirkungen auf Anwendungen zu minimieren, wenn eine geplante Wartung in Autonomous Database durchgeführt wird. UCP füllt die Verbindungen im Pool proaktiv auf, sodass aktive Verbindungen nicht von der Wartung betroffen sind.

    Bei älteren Versionen des Treibers kann ein Patch für den Bug 31112088 auch durch Einreichen einer Serviceanfrage angefordert werden.

    Unterstützte Versionen herunterladen: Oracle Database JDBC-Treiber und Companion Jars-Downloads.

JDBC-URL-Verbindungszeichenfolge mit JDBC Thin-Treiber und Wallets verwenden

Die Verbindungszeichenfolge befindet sich in der Datei tnsnames.ora, die im Downloadumfang der Clientzugangsdaten enthalten ist. Die Datei tnsnames.ora enthält die vordefinierten Servicenamen. Jeder Service verfügt über einen eigenen TNS-Alias und eine eigene Verbindungszeichenfolge.

Nachstehend sehen Sie einen Beispieleintrag mit dbname_high als TNS-Alias und einer Verbindungszeichenfolge in tnsnames.ora:
dbname_high= (description=
      (address=(protocol=tcps)(port=1522)(host=adb.example.oraclecloud.com))
      (connect_data=(service_name=dbname_high.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

Legen Sie den Speicherort von tnsnames.ora mit der Eigenschaft TNS_ADMIN fest.

  • Als Teil der Verbindungszeichenfolge (nur mit JDBC-Treiber 18.3 oder höher)
  • Als Systemeigenschaft: -Doracle.net.tns_admin
  • Als Verbindungseigenschaft (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN)

Bei Verwendung des 18.3 JDBC-Treiber enthält die Verbindungszeichenfolge den TNS-Alias und die Verbindungseigenschaft TNS_ADMIN.

Beispiel für eine Verbindungszeichenfolge mit 18.3 JDBC-Treiber (Linux):

DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"

Beispiel für eine Verbindungszeichenfolge mit 18.3 JDBC-Treiber (Windows):

DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=C:\\Users\\test\\wallet_dbname"

Die Verbindungseigenschaft TNS_ADMIN gibt Folgendes an:

  • Speicherort von tnsnames.ora.
  • Speicherort von Oracle Wallet-Dateien (ewallet.sso, ewallet.p12) oder Java KeyStore-(JKS-)Dateien (truststore.jks, keystore.jks).
  • Speicherort von ojdbc.properties. Diese Datei enthält die Verbindungseigenschaften, die für die Verwendung von Oracle Wallets oder Java KeyStore (JKS) erforderlich sind.
Hinweis

Wenn Sie JDBC-Treiber der Version 12.2.0.1 oder höher verwenden, enthält die Verbindungszeichenfolge nur den TNS-Alias. So stellen Sie Verbindungen mit JDBC-Treibern früherer Versionen her:

  • Legen Sie den Speicherort von tnsnames.ora fest, entweder als Systemeigenschaft mit -Doracle.net.tns_admin oder als Verbindungseigenschaften (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN).
  • Legen Sie die Wallet- oder JKS-bezogenen Verbindungseigenschaften zusätzlich zu TNS_ADMIN fest.

Beispiel: In diesem Fall legen Sie den TNS-Alias in DB_URL ohne den Teil TNS_ADMIN fest:

DB_URL=”jdbc:oracle:thin:@dbname_high”

Weitere Informationen finden Sie unter Datenbankservicenamen für Autonomous Database.

JDBC-Verbindung mit 18.3 JDBC-Treiber verwenden

Anwendungen, die den JDBC Thin-Treiber verwenden, können mit Oracle Wallets oder Java KeyStore (JKS) eine Verbindung zu autonomen Datenbanken herstellen.

Oracle Wallet verwenden

So verwenden Sie Java und den 18.3 JDBC Thin-Treiber für die Verbindung mit Autonomous Database mit Oracle Wallet:

  1. Sicherstellen, dass die Voraussetzungen erfüllt sind: Weitere Informationen finden Sie unter Voraussetzungen für JDBC Thin-Treiberverbindungen mit Wallets (mTLS).

  2. Verbindung prüfen: Sie können die Verbindung zur Datenbank entweder mit einem Java-Programm, einem Servlet oder mit IDEs prüfen. Ein einfacher Test ist es, DataSourceSample.java oder UCPSample.java aus JDBC-Codebeispielen herunterzuladen und die Verbindungs-URL mit dem erforderlichen TNS-Alias zu aktualisieren und TNS_ADMIN zu übergeben. Dabei werden der Pfad für tnsnames.ora und die Wallet-Dateien angegeben. Aktualisieren Sie außerdem im Beispielquellcode den Datenbanknamen und das Kennwort. Beispiele:

    DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
    Hinweis

    Wenn Sie Microsoft Active Directory mit einer Datenbank verwenden, aktualisieren Sie im Beispielquellcode den Benutzernamen mit dem Active Directory-Benutzernamen und das Kennwort mit dem Active Directory-Benutzerpasswort. Weitere Informationen finden Sie unter Microsoft Active Directory mit Autonomous Database verwenden.
  3. Wallet-Speicherort festlegen: Die Eigenschaftendatei ojdbc.properties wird vorab mit der walletbezogenen Verbindungseigenschaft geladen.

    oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
    Hinweis

    Sie ändern dabei nicht die Datei ojdbc.properties. Der Wert TNS_ADMIN bestimmt den Wallet-Verzeichnis.
  4. Kompilieren und ausführen: Kompilieren Sie das Beispiel, und führen Sie es aus, um eine erfolgreiche Verbindung herzustellen. Stellen Sie sicher, dass oraclepki.jar, osdt_core.jar und osdt_cert.jar unter classpath vorhanden sind. Beispiele:

    java –classpath
          ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:. UCPSample
Hinweis

Dank der von Autonomous Database heruntergeladenen ZIP-Datei mit Clientzugangsdaten für die automatische Wallet-Anmeldung ist die Authentifizierung mit Benutzername und Kennwort für Ihre Anwendung nicht mehr erforderlich.

Java KeyStore verwenden

So verwenden Sie Java und den 18.3 JDBC Thin-Treiber für die Verbindung mit Autonomous Database mit Java KeyStore (JKS):

  1. Sicherstellen, dass die Voraussetzungen erfüllt sind: Weitere Informationen finden Sie unter Voraussetzungen für JDBC Thin-Treiberverbindungen mit Wallets (mTLS).

  2. Datenbankdetails vorbereiten: Sie können die Verbindung zur Datenbank entweder mit einem Java-Programm, einem Servlet oder mit IDEs prüfen. Ein einfacher Test ist das Herunterladen von DataSourceSample.java oder UCPSample.java aus JDBC-Codebeispielen. Verwenden Sie in diesem Beispiel die angezeigte Verbindungs-URL. Beachten Sie, dass die DB_URL-Verbindung den TNS-Alias enthält, z.B. dbname_high in tnsnames.ora. Sie können den Pfad für die Datei tnsnames.ora über die Eigenschaft TNS_ADMIN angeben, wie in der URL dargestellt. Stellen Sie sicher, dass Sie den Datenbanknamen und das Kennwort für Ihre Datenbank verwenden.

    DB_URL="jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/Users/test/wallet_dbname"
    Hinweis

    Wenn Sie Microsoft Active Directory mit Autonomous Database verwenden, müssen Sie den Beispielquellencode so ändern, dass der Active Directory-Benutzername und das Active Directory-Benutzerkennwort verwendet werden. Weitere Informationen finden Sie unter Microsoft Active Directory mit Autonomous Database verwenden.
  3. JKS-bezogene Verbindungseigenschaften festlegen: Fügen Sie die JKS-bezogenen Verbindungseigenschaften der Datei ojdbc.properties hinzu. Das keyStore- und das Truststore-Kennwort sind das Kennwort, das beim Herunterladen der .zip-Datei mit den Clientzugangsdaten angegeben wird.

    Um die SSL-Verbindung anstelle von Oracle Wallet zu verwenden, geben Sie die Keystore- und Truststore-Dateien und das entsprechende Kennwort in der Datei ojdbc.properties an:

    
    # Properties for using Java KeyStore (JKS)
    oracle.net.ssl_server_dn_match=true
    javax.net.ssl.trustStore==${TNS_ADMIN}/truststore.jks
    javax.net.ssl.trustStorePassword=password
    javax.net.ssl.keyStore==${TNS_ADMIN}/keystore.jks
    javax.net.ssl.keyStorePassword=password
    Hinweis

    Kommentieren Sie die walletbezogene Eigenschaft in ojdbc.properties. Beispiele:
    
    # Property for using Oracle Wallets
    # oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
  4. Kompilieren und ausführen: Kompilieren Sie das Beispiel, und führen Sie es aus, um eine erfolgreiche Verbindung herzustellen. Beispiele:

    java –classpath ./lib/ojdbc8.jar:./lib/ucp.jar UCPSample

Verbindung über JDBC Thin-Treiber 12.2 oder eine frühere Version herstellen

Wenn Sie den JDBC-Treiber 12.2.0.2 oder eine frühere Version verwenden, legen Sie die Java-Eigenschaften vor dem Starten der Anwendung fest. In der Regel legen Sie die Eigenschaften im Startup-Skript der Anwendung fest.

Wenn Sie die neuesten JDBC-Treiber nicht verwenden können, können Sie mit 12.2.0.2 oder anderen älteren JDBC-Treibern eine Verbindung zu Autonomous Database herstellen. Die JDBC-Treiber der Version 12.2 oder älter unterstützen die Datei ojdbc.properties nicht. Bei älteren JDBC-Treiberversionen müssen Sie Wallets oder JKS-bezogene Eigenschaften entweder als Systemeigenschaften oder als Verbindungseigenschaften übergeben, um eine Verbindung herzustellen.

Oracle Wallet verwenden

So verwenden Sie Java und JDBC-Treiber der Version 12.2 oder früher für die Verbindung mit Autonomous Database mit Oracle Wallet:

  1. Sicherstellen, dass die Voraussetzungen erfüllt sind: Weitere Informationen finden Sie unter Voraussetzungen für JDBC Thin-Treiberverbindungen mit Wallets (mTLS).

  2. Verbindung prüfen: Sie können die Verbindung zur Datenbank entweder mit einem Java-Programm, einem Servlet oder mit IDEs prüfen. Ein einfacher Test ist das Herunterladen von DataSourceSample.java oder UCPSample.java von JDBC-Codebeispielen und das Aktualisieren der Verbindungs-URL mit dem erforderlichen TNS-Alias. Außerdem aktualisieren Sie den Beispielquellcode so, dass der Datenbankbenutzername und das Kennwort verwendet werden. Beispiele:

    DB_URL="jdbc:oracle:thin:@dbname_high”
    Hinweis

    Wenn Sie Microsoft Active Directory mit Autonomous Database verwenden, aktualisieren Sie den Beispielquellcode so, dass der Active Directory-Benutzername und das Active Directory-Benutzerpasswort verwendet werden. Weitere Informationen finden Sie unter Microsoft Active Directory mit Autonomous Database verwenden.
  3. Wallet-Speicherort festlegen: Fügen Sie OraclePKIProvider am Ende der Providerliste in der Datei java.security hinzu (diese Datei gehört zur JRE-Installation unter $JRE_HOME/jre/lib/security/java.security), die in der Regel wie folgt aussieht:

    security.provider.14=oracle.security.pki.OraclePKIProvider
  4. Kompilieren und ausführen: Kompilieren Sie das Beispiel, und führen Sie es aus, um eine erfolgreiche Verbindung herzustellen. Stellen Sie sicher, dass oraclepki.jar, osdt_core.jar und osdt_cert.jar unter classpath enthalten sind. Außerdem müssen Sie die Verbindungseigenschaften übergeben. Aktualisieren Sie die Eigenschaften mit dem Speicherort, in dem sich tnsnames.ora und Wallet-Dateien befinden.

    java –classpath 
    ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:.
    -Doracle.net.tns_admin=/users/test/wallet_dbname  
    -Doracle.net.ssl_server_dn_match=true  
    -Doracle.net.ssl_version=1.2  (Not required for 12.2)
    -Doracle.net.wallet_location= “(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/users/test/wallet_dbname)))” 
    UCPSample
Hinweis

Diese Beispiele beziehen sich auf Windows-Systeme. Fügen Sie ein \-Fortsetzungszeichen hinzu, wenn Sie –D-Eigenschaften auf mehreren Zeilen unter UNIX (Linux oder Mac) festlegen.

Java KeyStore verwenden

So verwenden Sie Java und JDBC Thin-Treiber der Version 12.2 oder früher für die Verbindung mit Autonomous Database mit Java KeyStore (JKS):

  1. Sicherstellen, dass die Voraussetzungen erfüllt sind: Weitere Informationen finden Sie unter Voraussetzungen für JDBC Thin-Treiberverbindungen mit Wallets (mTLS).

  2. Verbindung prüfen: Sie können die Verbindung zur Datenbank entweder mit einem Java-Programm, einem Servlet oder mit IDEs prüfen. Ein einfacher Test ist das Herunterladen von DataSourceSample.java oder UCPSample.java aus JDBC-Codebeispielen, das Aktualisieren der Verbindungs-URL mit dem erforderlichen TNS-Alias und das Übergeben von TNS_ADMIN, das Bereitstellen des Pfads für tnsnames.ora und das Aktualisieren der Verbindungs-URL mit dem erforderlichen TNS-Alias. Aktualisieren Sie außerdem im Beispielquellcode den Datenbanknamen und das Kennwort. Beispiele:

    DB_URL="jdbc:oracle:thin:@dbname_high”
    Hinweis

    Wenn Sie Microsoft Active Directory mit Autonomous Database verwenden, aktualisieren Sie den Beispielquellcode so, dass der Active Directory-Benutzername und das Active Directory-Benutzerpasswort verwendet werden. Weitere Informationen finden Sie unter Microsoft Active Directory mit Autonomous Database verwenden.
  3. Kompilieren und ausführen: Kompilieren Sie das Beispiel, und führen Sie es aus, um eine erfolgreiche Verbindung herzustellen. Sie müssen die Verbindungseigenschaften wie dargestellt übergeben. Aktualisieren Sie die Eigenschaften mit dem Speicherort, in dem tnsnames.ora und JKS-Dateien gespeichert sind. Wenn Sie diese Verbindungseigenschaften programmatisch übergeben möchten, finden Sie entsprechende Informationen unter DataSourceForJKS.java. Beispiele:

    java 
    -Doracle.net.tns_admin=/users/test/wallet_dbname
    -Djavax.net.ssl.trustStore=truststore.jks
    -Djavax.net.ssl.trustStorePassword=**********
    -Djavax.net.ssl.keyStore=keystore.jks    
    -Djavax.net.ssl.keyStorePassword=************   
    -Doracle.net.ssl_server_dn_match=true    
    -Doracle.net.ssl_version=1.2 // Not required for 12.2

JDBC Thin-Verbindungen mit einem HTTP-Proxy

Wenn sich der Client hinter einer Firewall befindet und Ihre Netzwerkkonfiguration einen HTTP-Proxy für die Verbindung zum Internet erfordert, müssen Sie den JDBC Thin Client 18.1 oder höher verwenden, der Verbindungen über HTTP-Proxys ermöglicht.

Um eine Verbindung zu Autonomous Database über einen HTTPS-Proxy herzustellen, öffnen und aktualisieren Sie die Datei tnsnames.ora. Fügen Sie der Verbindungszeichenfolge den HTTP-Proxyhostnamen (https_proxy) und den Port (https_proxy_port) hinzu. Ersetzen Sie die Werte durch die Informationen zu Ihrem HTTPS-Proxy. Beispiele:

  1. Fügen Sie den Verbindungsdefinitionen in tnsnames.ora den HTTP-Proxyhostnamen und -port hinzu. Sie müssen die Parameter https_proxy und https_proxy_port im Adressabschnitt der Verbindungsdefinitionen hinzufügen. Im folgenden Beispiel wird der HTTP-Proxy auf proxyhostname und der HTTP-Proxyport auf 80 gesetzt. Ersetzen Sie diese Werte durch Ihre HTTP-Proxyinformationen:

db2022adb_high =
       (description=
             (address=
                   (https_proxy=proxyhostname)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.example.oraclecloud.com)
             )
             (connect_data=(service_name=db2022adb_high.adb.oraclecloud.com)
             )
             (security=security=(ssl_server_dn_match=yes)
             )
       )
Hinweis

  • JDBC Thin Client-Versionen vor 18.1 unterstützen keine Verbindungen über einen HTTP Proxy.

  • Eine erfolgreiche Verbindung ist von bestimmten Proxykonfigurationen abhängig. Die Performance von Datenübertragungen ist von der Proxykapazität abhängig. Oracle empfiehlt die Verwendung dieses Features nicht in Production-Umgebungen, in denen Performance entscheidend ist.

  • Die Konfiguration von tnsnames.ora für den HTTP-Proxy reicht je nach Netzwerkkonfiguration Ihrer Organisation und Sicherheits-Policys möglicherweise nicht aus. Beispielsweise erfordern einige Netzwerke einen Benutzernamen und ein Kennwort für den HTTP-Proxy.

  • Wenden Sie sich in allen Fällen an den Netzwerkadministrator, um ausgehende Verbindungen zu Hosts in der Domain oraclecloud.com über den relevanten Port zu öffnen, ohne einen HTTP-Proxy zu durchlaufen.