Connessioni thin JDBC con un wallet (mTLS)

Autonomous Database richiede una connessione sicura che utilizza TLSv1.2 (Transport Layer Security). A seconda delle opzioni di configurazione di rete, Autonomous Database supporta l'autenticazione mTLS e TLS.

Nota

Se si utilizza TLS anziché mTLS per le connessioni che utilizzano il driver thin JDBC con JDK8u162 o versione successiva, non è necessario un wallet. Le connessioni TLS sono abilitate per le seguenti configurazioni di rete:


  • Solo accesso endpoint privato: configurazione di rete con un endpoint privato

  • Accesso sicuro solo da IP e VCN consentiti: configurazione con una lista di controllo dell'accesso (ACL, Access Control List)

    Se Autonomous Database si trova in un endpoint pubblico senza ACL, è possibile aggiungere 0.0.0.0/0 come ACL CIDR e abilitare l'autenticazione TLS. L'aggiunta di 0.0.0.0/0 come ACL CIDR è identica a quella di Autonomous Database nell'endpoint pubblico senza ACL.

Per ulteriori informazioni, vedere Secure Connections to Autonomous Database con mTLS o con TLS.

Connessioni dei prerequisiti per la connessione al driver thin JDBC con i wallet (mTLS)

Le applicazioni che utilizzano il driver JDBC Thin supportano l'autenticazione TLS e mTLS (Mutual TLS). L'utilizzo dell'autenticazione mTLS richiede di fornire le credenziali del database Oracle, inclusi i wallet Oracle o i file JKS (Java KeyStore) durante la connessione al database.

Eseguire i passi riportati di seguito prima di connettersi al database.

  1. Provisioning di Autonomous Database: creare un database e ottenere le credenziali del database (nome utente e password).
  2. Per le connessioni TLS reciproche, Scarica credenziali client: decomprimere il wallet_nome database.zip in una posizione sicura. Accertarsi che l'accesso a questi file sia consentito solo agli utenti autorizzati.

    Per informazioni sul download delle credenziali client per Autonomous Database, vedere Download delle credenziali client (wallet).

  3. Verificare la versione del kit JDK per la sicurezza: se si utilizza JDK11, JDK10 o JDK9, non è necessario eseguire alcuna operazione per questo passo. Se la versione di JDK è inferiore a JDK8u162, è necessario scaricare i file JCE Unlimited Strength Jurisiction Policy. Fare riferimento al file README per le note di installazione. Scaricare i file JCE da Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download.
  4. Controlla versione driver JDBC: scaricare un driver JDBC Thin supportato (ojdbc8.jar e ucp.jar). Sono inoltre necessari i file jar aggiuntivi: oraclepki.jar, osdt_core.jar e osdt_cert.jar da utilizzare con i wallet Oracle.

    Le versioni supportate sono:

    • JDBC Thin: 11.2.0.4 (o versione successiva con patch singola per il bug 28492769), 12.2 (o versione successiva con patch singola per il bug 28492769), 18 (release di base o successiva con patch singola per il bug 28492769), 19 (release di base o successiva) o 21 (release di base o successiva)

    Per le applicazioni che utilizzano la funzione Universal Connection Pool (UCP) di JDBC, si consiglia di utilizzare le versioni 19.13 o successive o 21.3 o successive del driver JDBC. Queste versioni includono un comportamento di drenaggio appropriato per ridurre al minimo l'impatto sulle applicazioni quando viene eseguita la manutenzione pianificata in Autonomous Database. UCP rifornirà le connessioni nel pool in modo proattivo in modo che le connessioni attive non siano interessate dalla manutenzione.

    Per le versioni precedenti del driver, è possibile richiedere una patch per bug 31112088 anche compilando una richiesta di servizio.

    Scaricare le versioni supportate: Oracle Database JDBC Driver and Companion Jars Downloads.

Utilizzo di una stringa di connessione URL JDBC con il driver e i wallet Thin JDBC

La stringa di connessione si trova nel file tnsnames.ora che fa parte del download delle credenziali client. Il file tnsnames.ora contiene i nomi di servizio predefiniti. Ogni servizio ha il proprio alias TNS e la stringa di connessione.

Di seguito è riportata una voce di esempio, con dbname_high come alias TNS e una stringa di connessione 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)))

Impostare la posizione di tnsnames.ora con la proprietà TNS_ADMIN in uno dei modi seguenti:

  • Come parte della stringa di connessione (solo con il driver JDBC 18.3 o più recente)
  • Come proprietà di sistema, -Doracle.net.tns_admin
  • Come proprietà di connessione (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN)

Utilizzando il driver JDBC 18.3, la stringa di connessione include l'alias TNS e la proprietà di connessione TNS_ADMIN.

Stringa di connessione di esempio che utilizza il driver JDBC 18.3 (Linux):

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

Stringa di connessione di esempio che utilizza il driver JDBC 18.3 (Windows):

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

La proprietà di connessione TNS_ADMIN specifica quanto segue:

  • La posizione di tnsnames.ora.
  • La posizione dei file Oracle Wallet (ewallet.sso, ewallet.p12) o Java KeyStore (JKS) (truststore.jks, keystore.jks).
  • La posizione di ojdbc.properties. Questo file contiene le proprietà di connessione necessarie per utilizzare i wallet Oracle o JKS (Java KeyStore).
Nota

Se si utilizzano driver JDBC 12.2.0.1 o precedenti, la stringa di connessione contiene solo l'alias TNS. Per connettersi utilizzando driver JDBC meno recenti:

  • Impostare la posizione di tnsnames.ora come proprietà di sistema con -Doracle.net.tns_admin o come proprietà di connessione (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN).
  • Impostare le proprietà di connessione correlate al wallet o a JKS oltre a TNS_ADMIN.

Ad esempio, in questo caso si imposta l'alias TNS nel file DB_URL senza la parte TNS_ADMIN come indicato di seguito.

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

Per ulteriori dettagli, vedere Nomi dei servizi di database per Autonomous Database.

Uso di una connessione JDBC con il driver JDBC 18.3

Le applicazioni che utilizzano il driver JDBC Thin possono connettersi ad Autonomous Database utilizzando i wallet Oracle o JKS (Java KeyStore).

Uso di Oracle Wallet

Per utilizzare Java e il driver thin JDBC 18.3 per connettersi ad Autonomous Database con Oracle Wallet, effettuare le operazioni riportate di seguito.

  1. Assicurarsi che i prerequisiti vengano soddisfatti: per ulteriori informazioni, vedere JDBC Thin Driver Connection Prerequisites Connections With Wallets (mTLS).

  2. Verificare la connessione: è possibile utilizzare un programma Java, un servlet o IDE per verificare la connessione al database. Un test semplice consiste nel scaricare DataSourceSample.java o UCPSample.java da esempi di codice JDBC e aggiornare l'URL di connessione in modo da disporre dell'alias TNS richiesto e passare TNS_ADMIN, fornendo il percorso per tnsnames.ora e i file del wallet. Inoltre, nel codice sorgente di esempio aggiornare il nome utente e la password del database. Ad esempio:

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

    Se si utilizza Microsoft Active Directory con un database, nel codice sorgente di esempio il nome utente viene aggiornato con il nome utente di Active Directory e la password viene aggiornata con la password utente di Active Directory. Per ulteriori informazioni, vedere Usa Microsoft Active Directory con Autonomous Database.
  3. Impostare la posizione del wallet: il file delle proprietà ojdbc.properties viene precaricato con la proprietà di connessione correlata al wallet.

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

    Non si modifica il file ojdbc.properties. Il valore TNS_ADMIN determina la posizione del wallet.
  4. Compila ed esegui: compilare ed eseguire l'esempio per ottenere una connessione riuscita. Assicurarsi di disporre di oraclepki.jar, osdt_core.jar e osdt_cert.jar nel file classpath. Ad esempio:

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

La parte del wallet di login automatico del file zip delle credenziali client scaricato di Autonomous Database elimina la necessità che l'applicazione utilizzi l'autenticazione nome utente/password.

Uso di Java KeyStore

Per utilizzare Java e il driver thin JDBC 18.3 per connettersi ad Autonomous Database con JKS (Java KeyStore), effettuare le operazioni riportate di seguito.

  1. Assicurarsi che i prerequisiti vengano soddisfatti: per ulteriori informazioni, vedere JDBC Thin Driver Connection Prerequisites Connections With Wallets (mTLS).

  2. Preparare i dettagli del database: è possibile utilizzare un programma Java, un servlet o IDE per controllare la connessione al database. Un semplice test consiste nel scaricare DataSourceSample.java o UCPSample.java da esempi di codice JDBC. In questo esempio, utilizzare l'URL di connessione come mostrato. Si noti che la connessione DB_URL contiene l'alias TNS, ad esempio dbname_high presente in tnsnames.ora. È possibile fornire il percorso per il file tnsnames.ora tramite la proprietà TNS_ADMIN come mostrato nell'URL. Assicurarsi di utilizzare il nome utente e la password del database correlati al database.

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

    Se si utilizza Microsoft Active Directory con Autonomous Database, assicurarsi di modificare il codice sorgente di esempio in modo che utilizzi il nome utente di Active Directory e la password utente di Active Directory. Per ulteriori informazioni, vedere Usa Microsoft Active Directory con Autonomous Database.
  3. Imposta proprietà di connessione correlate a JKS: aggiungere le proprietà di connessione correlate a JKS al file ojdbc.properties. La password keyStore e il truststore sono la password specificata durante il download del file delle credenziali client .zip.

    Per utilizzare la connettività SSL anziché Oracle Wallet, specificare i file keystore e truststore e la rispettiva password nel file ojdbc.properties come indicato di seguito.

    
    # 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
    Nota

    Assicurarsi di commentare la proprietà relativa al wallet in ojdbc.properties. Ad esempio:
    
    # Property for using Oracle Wallets
    # oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
  4. Compila ed esegui: compilare ed eseguire l'esempio per ottenere una connessione riuscita. Ad esempio:

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

Connessione mediante JDBC Thin Driver 12.2 o precedente

Se si utilizza il driver JDBC 12.2.0.2 o una versione precedente, impostare le proprietà Java prima di avviare l'applicazione. In genere si impostano le proprietà nello script di avvio dell'applicazione.

Se non si è in grado di utilizzare i driver JDBC più recenti, è possibile connettersi ad Autonomous Database utilizzando 12.2.0.2 o altri driver JDBC precedenti. I driver JDBC 12.2 o precedenti non supportano il file ojdbc.properties. Con le versioni precedenti del driver JDBC, è necessario passare i wallet o le proprietà correlate a JKS come proprietà di sistema o come proprietà di connessione per stabilire una connessione.

Uso di Oracle Wallet

Per utilizzare i driver JDBC Java e 12.2 o precedenti per connettersi ad Autonomous Database con Oracle Wallet, effettuare le operazioni riportate di seguito.

  1. Assicurarsi che i prerequisiti vengano soddisfatti: per ulteriori informazioni, vedere JDBC Thin Driver Connection Prerequisites Connections With Wallets (mTLS).

  2. Verificare la connessione: è possibile utilizzare un programma Java, un servlet o IDE per verificare la connessione al database. Un test semplice consiste nel scaricare DataSourceSample.java o UCPSample.java da esempi di codice JDBC e aggiornare l'URL di connessione in modo da disporre dell'alias TNS richiesto. Aggiornare inoltre il codice sorgente di esempio per utilizzare il nome utente e la password del database. Ad esempio:

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

    Se si utilizza Microsoft Active Directory con Autonomous Database, aggiornare il codice sorgente di esempio in modo che utilizzi il nome utente di Active Directory e la password utente di Active Directory. Per ulteriori informazioni, vedere Usa Microsoft Active Directory con Autonomous Database.
  3. Impostare la posizione del wallet: aggiungere OraclePKIProvider alla fine dell'elenco dei provider nel file java.security (questo file fa parte dell'installazione JRE in $JRE_HOME/jre/lib/security/java.security) che in genere ha l'aspetto seguente:

    security.provider.14=oracle.security.pki.OraclePKIProvider
  4. Compila ed esegui: compilare ed eseguire l'esempio per ottenere una connessione riuscita. Assicurarsi di disporre di oraclepki.jar, osdt_core.jar e osdt_cert.jar nel file classpath. È inoltre necessario passare le proprietà di connessione. Aggiornare le proprietà con la posizione in cui si trovano i file tnsnames.ora e wallet.

    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
Nota

Di seguito sono riportati alcuni esempi di sistema Windows. Aggiungere un carattere di continuazione \ se si impostano le proprietà –D su più righe in UNIX (Linux o Mac).

Uso di Java KeyStore

Per utilizzare Java e i driver thin JDBC 12.2 o precedenti per connettersi ad Autonomous Database con Java KeyStore (JKS), effettuare le operazioni riportate di seguito.

  1. Assicurarsi che i prerequisiti vengano soddisfatti: per ulteriori informazioni, vedere JDBC Thin Driver Connection Prerequisites Connections With Wallets (mTLS).

  2. Verificare la connessione: è possibile utilizzare un programma Java, un servlet o IDE per verificare la connessione al database. Un test semplice consiste nel scaricare DataSourceSample.java o UCPSample.java da esempi di codice JDBC e aggiornare l'URL di connessione in modo da disporre dell'alias TNS richiesto e passare TNS_ADMIN, fornendo il percorso per tnsnames.ora e aggiornare l'URL di connessione in modo che disponga dell'alias TNS richiesto. Inoltre, nel codice sorgente di esempio aggiornare il nome utente e la password del database. Ad esempio:

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

    Se si utilizza Microsoft Active Directory con Autonomous Database, aggiornare il codice sorgente di esempio in modo che utilizzi il nome utente di Active Directory e la password utente di Active Directory. Per ulteriori informazioni, vedere Usa Microsoft Active Directory con Autonomous Database.
  3. Compila ed esegui: compilare ed eseguire l'esempio per ottenere una connessione riuscita. È necessario passare le proprietà di connessione come mostrato. Aggiornare le proprietà con la posizione in cui vengono posizionati i file tnsnames.ora e JKS. Se si desidera passare queste proprietà di connessione a livello di programmazione, fare riferimento a DataSourceForJKS.java. Ad esempio:

    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

Connessioni thin JDBC con proxy HTTP

Se il client è protetto da un firewall e la configurazione di rete richiede un proxy HTTP per la connessione a Internet, è necessario utilizzare il thin client JDBC 18.1 o versione successiva che abilita le connessioni tramite proxy HTTP.

Per connettersi ad Autonomous Database tramite un proxy HTTPS, aprire e aggiornare il file tnsnames.ora. Aggiungere il nome host (https_proxy) e la porta (https_proxy_port) del proxy HTTP alla stringa di connessione. Sostituire i valori con le informazioni sul proxy HTTPS. Ad esempio:

  1. Aggiungere il nome host e la porta del proxy HTTP alle definizioni di connessione in tnsnames.ora. È necessario aggiungere i parametri https_proxy e https_proxy_port nella sezione degli indirizzi delle definizioni di connessione. Ad esempio, quanto segue imposta il proxy HTTP su proxyhostname e la porta del proxy HTTP su 80; sostituire questi valori con le informazioni sul proxy HTTP:

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)
             )
       )
Nota

  • Le versioni Thin client JDBC precedenti alla 18.1 non supportano le connessioni tramite proxy HTTP.

  • La connessione riuscita dipende da configurazioni proxy specifiche e le prestazioni dei trasferimenti di dati dipendono dalla capacità proxy. Oracle sconsiglia di utilizzare questa funzione in ambienti di produzione in cui le prestazioni sono fondamentali.

  • La configurazione di tnsnames.ora per il proxy HTTP potrebbe non essere sufficiente a seconda dei criteri di configurazione e sicurezza della rete dell'organizzazione. Ad esempio, alcune reti richiedono un nome utente e una password per il proxy HTTP.

  • In tutti i casi, contattare l'amministratore di rete per aprire le connessioni in uscita agli host nel dominio oraclecloud.com utilizzando la porta pertinente senza passare attraverso un proxy HTTP.