JDBC Thin-Verbindungen mit einem Wallet (mTLS)

Autonomous Database schreibt eine sichere Verbindung vor, 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 Verbindungen verwenden, die JDBC-Thin-Treiber mit JDK8u162 oder höher verwenden, ist kein Wallet erforderlich. TLS-Verbindungen sind für die folgenden Netzwerkkonfigurationen aktiviert:


  • Nur Zugriff auf 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 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 ist identisch mit dem Hinzufügen von Autonomous Database auf einem öffentlichen Endpunkt ohne ACL.

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

JDBC-Thin-Treiberverbindung – Voraussetzungen für Verbindungen mit Wallets (mTLS)

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

Führen Sie die folgenden Schritte aus, bevor Sie sich bei der Datenbank anmelden:

  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 Clientzugangsdaten herunterladen: Dekomprimieren Sie wallet_databasename.zip in einen sicheren Speicherort. Stellen Sie sicher, dass nur autorisierte Benutzer Zugriff auf diese Dateien haben.

    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, müssen Sie für diesen Schritt keine weiteren Schritte ausführen. Wenn Ihre JDK-Version kleiner als JDK8u162 ist, müssen Sie die JCE Unlimited Strength Jurisdiction Policy-Dateien herunterladen. Hinweise zur Installation finden Sie in der Datei README. Laden Sie die JCE-Dateien von Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download herunter.
  4. JDBC-Treiberversion prüfen: Laden Sie einen unterstützten JDBC-Thin-Treiber herunter (ojdbc8.jar und ucp.jar). Sie benötigen auch die zusätzlichen JAR-Dateien: oraclepki.jar, osdt_core.jar und osdt_cert.jar zur Verwendung mit Oracle-Wallets.

    Unterstützte Versionen sind:

    • 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, 19.13 oder höhere Versionen oder 21.3 oder höhere Versionen des JDBC-Treibers zu verwenden. Diese Versionen enthalten ein ordnungsgemäßes Draining-Verhalten, um die Auswirkungen auf Anwendungen zu minimieren, wenn die 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.

    Für ältere Versionen des Treibers kann auch ein Patch für Bug 31112088 angefordert werden, indem eine Serviceanfrage gestellt wird.

    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 Teil des Downloads der Clientzugangsdaten ist. Die Datei tnsnames.ora enthält die vordefinierten Servicenamen. Jeder Service verfügt über einen eigenen TNS-Alias und eine eigene Verbindungszeichenfolge.

Ein Beispieleintrag mit dbname_high als TNS-Alias und einer Verbindungszeichenfolge in tnsnames.ora lautet wie folgt:
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 wie folgt fest:

  • Als Teil der Verbindungszeichenfolge (nur mit dem 18.3- oder neueren JDBC-Treiber)
  • Als Systemeigenschaft, -Doracle.net.tns_admin
  • Als Verbindungseigenschaft (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN)

Mit dem JDBC-Treiber 18.3 enthält die Verbindungszeichenfolge den TNS-Alias und die Verbindungseigenschaft TNS_ADMIN.

Beispiel-Verbindungszeichenfolge mit 18.3 JDBC-Treiber (Linux):

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

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

  • Der Speicherort von tnsnames.ora.
  • Der Speicherort der Oracle Wallet-Dateien (ewallet.sso, ewallet.p12) oder Java KeyStore-(JKS-)Dateien (truststore.jks, keystore.jks).
  • Der 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 12.2.0.1 oder ältere JDBC-Treiber verwenden, enthält die Verbindungszeichenfolge nur den TNS-Alias. So stellen Sie Verbindungen mit älteren JDBC-Treibern her:

  • Legen Sie den Speicherort der tnsnames.ora fest, entweder als Systemeigenschaft mit -Doracle.net.tns_admin oder als Verbindungseigenschaft (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 im DB_URL ohne den TNS_ADMIN-Teil wie folgt 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

Um Java und den JDBC-Thin-Treiber 18.3 für die Verbindung mit Autonomous Database mit Oracle Wallet zu verwenden, gehen Sie wie folgt vor:

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

  2. Verbindung prüfen: Sie können entweder ein Java-Programm, ein Servlet oder IDEs verwenden, um die Verbindung zur Datenbank zu prüfen. Ein einfacher Test besteht darin, DataSourceSample.java oder UCPSample.java aus JDBC-Codebeispielen herunterzuladen und die Verbindungs-URL so zu aktualisieren, dass der erforderliche TNS-Alias vorhanden ist, und TNS_ADMIN zu übergeben. Dabei wird der Pfad für tnsnames.ora und die Wallet-Dateien angegeben. Aktualisieren Sie außerdem im Beispielquellcode den Benutzernamen und das Kennwort der Datenbank. Beispiel:

    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 aktualisieren Sie das Kennwort mit dem Active Directory-Benutzerkennwort. Weitere Informationen finden Sie unter Microsoft Active Directory mit Autonomous Database verwenden.
  3. Wallet-Speicherort festlegen: Die Eigenschaftendatei ojdbc.properties wird mit der Wallet-bezogenen Verbindungseigenschaft vorab geladen.

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

    Sie ändern die Datei ojdbc.properties nicht. Der Wert von TNS_ADMIN bestimmt den Wallet-Speicherort.
  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 in der classpath enthalten sind. Beispiel:

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

Mit dem Wallet-Teil für die automatische Anmeldung in der ZIP-Datei mit den heruntergeladenen Autonomous Database-Clientzugangsdaten muss die Anwendung keine Benutzernamen-/Kennwortauthentifizierung verwenden.

Java KeyStore verwenden

Um Java und den JDBC-Thin-Treiber 18.3 für die Verbindung mit Autonomous Database mit Java KeyStore (JKS) zu verwenden, gehen Sie wie folgt vor:

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

  2. Bereitstellen der Datenbankdetails: Sie können entweder ein Java-Programm, ein Servlet oder IDEs verwenden, um die Verbindung zur Datenbank zu prüfen. Ein einfacher Test ist das Herunterladen von DataSourceSample.java oder UCPSample.java aus JDBC-Codebeispielen. Verwenden Sie in diesem Beispiel die Verbindungs-URL wie gezeigt. Beachten Sie, dass die Verbindung DB_URL den TNS-Alias enthält. Beispiel: dbname_high ist in tnsnames.ora vorhanden. Sie können den Pfad für die Datei tnsnames.ora über die Eigenschaft TNS_ADMIN angeben, wie in der URL gezeigt. Stellen Sie sicher, dass Sie den Datenbankbenutzernamen 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, ändern Sie den Beispielquellcode so, 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 zur Datei ojdbc.properties hinzu. keyStore und Truststore-Kennwort sind das Kennwort, das beim Herunterladen der Datei .zip mit den Clientzugangsdaten angegeben wird.

    Um SSL-Konnektivität anstelle von Oracle Wallet zu verwenden, geben Sie die Keystore- und Truststore-Dateien und das zugehörige Kennwort wie folgt 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

    Stellen Sie sicher, dass Sie die Wallet-bezogene Eigenschaft in ojdbc.properties kommentieren. Beispiel:
    
    # 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. Beispiel:

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

Verbindung mit JDBC-Thin-Treiber 12.2 oder älter

Wenn Sie den JDBC-Treiber 12.2.0.2 oder älter verwenden, legen Sie die Java-Eigenschaften fest, bevor Sie die Anwendung starten. In der Regel legen Sie die Eigenschaften im Startskript 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

Um Java und die 12.2- oder älteren JDBC-Treiber für die Verbindung mit Autonomous Database mit Oracle Wallet zu verwenden, gehen Sie wie folgt vor:

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

  2. Verbindung prüfen: Sie können entweder ein Java-Programm, ein Servlet oder IDEs verwenden, um die Verbindung zur Datenbank zu prüfen. Ein einfacher Test besteht darin, DataSourceSample.java oder UCPSample.java aus JDBC-Codebeispielen herunterzuladen und die Verbindungs-URL so zu aktualisieren, dass der erforderliche TNS-Alias vorhanden ist. Aktualisieren Sie außerdem den Beispielquellcode, um den Benutzernamen und das Kennwort der Datenbank zu verwenden. Beispiel:

    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-Benutzerkennwort verwendet werden. Weitere Informationen finden Sie unter Microsoft Active Directory mit Autonomous Database verwenden.
  3. Wallet-Speicherort festlegen: Fügen Sie die OraclePKIProvider am Ende der Providerliste in der Datei java.security hinzu (diese Datei ist Teil der JRE-Installation unter $JRE_HOME/jre/lib/security/java.security), die normalerweise 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 in 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

Dies sind Windows-Systembeispiele. Fügen Sie ein Fortsetzungszeichen \ hinzu, wenn Sie –D-Eigenschaften auf mehreren Zeilen unter UNIX (Linux oder Mac) festlegen.

Java KeyStore verwenden

Um Java und die 12.2 oder älteren JDBC-Thin-Treiber für die Verbindung zu Autonomous Database mit Java KeyStore (JKS) zu verwenden, gehen Sie wie folgt vor:

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

  2. Verbindung prüfen: Sie können entweder ein Java-Programm, ein Servlet oder IDEs verwenden, um die Verbindung zur Datenbank zu prüfen. Ein einfacher Test besteht darin, 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. Geben Sie dabei den Pfad für tnsnames.ora an, und aktualisieren Sie die Verbindungs-URL so, dass der erforderliche TNS-Alias vorhanden ist. Aktualisieren Sie außerdem im Beispielquellcode den Benutzernamen und das Kennwort der Datenbank. Beispiel:

    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-Benutzerkennwort 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 die Dateien tnsnames.ora und JKS gespeichert werden. Wenn Sie diese Verbindungseigenschaften programmgesteuert übergeben möchten, lesen Sie DataSourceForJKS.java. Beispiel:

    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 mit dem Internet erfordert, müssen Sie den JDBC Thin Client 18.1 oder höher verwenden, der Verbindungen über HTTP-Proxys ermöglicht.

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

  1. Fügen Sie den HTTP-Proxyhostnamen und -Port zu den Verbindungsdefinitionen in tnsnames.ora hinzu. Sie müssen die Parameter https_proxy und https_proxy_port im Adressabschnitt der Verbindungsdefinitionen hinzufügen. Beispiel: Im Folgenden 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-Clientversionen vor 18.1 unterstützen keine Verbindungen über HTTP-Proxy.

  • Eine erfolgreiche Verbindung hängt von bestimmten Proxykonfigurationen ab, und die Leistung der Datenübertragungen hängt von der Proxykapazität ab. Oracle empfiehlt nicht, dieses Feature in Produktionsumgebungen zu verwenden, in denen die Performance von entscheidender Bedeutung ist.

  • Die Konfiguration von tnsnames.ora für den HTTP-Proxy ist je nach Netzwerkkonfiguration und Sicherheits-Policys Ihrer Organisation möglicherweise nicht ausreichend. 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 mit dem relevanten Port zu öffnen, ohne einen HTTP-Proxy zu durchlaufen.