Conexiones JDBC Thin con una cartera (mTLS)

Autonomous Database exige una conexión segura que utilice la seguridad de capa de transporte (TLSv1.2). Según las opciones de configuración de red, Autonomous Database soporta la autenticación mTLS y TLS.

Nota

Si utiliza TLS, en lugar de mTLS, para las conexiones que utilizan el controlador ligero JDBC con JDK8u162 o superior, no es necesaria una cartera. Las conexiones TLS están activadas para las siguientes configuraciones de red:


  • Solo acceso de punto final privado: configuración de red con un punto final privado

  • Acceso seguro solo desde IP y VCN permitidas: configuración con una lista de control de acceso (ACL)

    If your Autonomous Database is on a public endpoint without any ACL, you can add 0.0.0.0/0 as your CIDR ACL and enable TLS authentication. Agregar 0.0.0.0/0 como ACL de CIDR es idéntico a tener Autonomous Database en un punto final público sin ACL.

Consulte Acerca de la autenticación TLS para obtener más información.

Requisitos de conexión de controlador JDBC Thin para conexiones con carteras (mTLS)

Las aplicaciones que utilizan el controlador JDBC Thin soportan la autenticación TLS y TLS mutua (mTLS). Para utilizar la autenticación mTLS es necesario proporcionar credenciales de base de datos Oracle, incluidas las carteras de Oracle o los archivos KeyStore (JKS) de Java al conectarse a la base de datos.

Realice los siguientes pasos antes de conectarse a la base de datos:

  1. Aprovisione Autonomous Database: cree una base de datos y obtenga sus credenciales de base de datos (nombre de usuario y contraseña).

    Consulte Aplicación de una instancia de Autonomous Database para obtener más información.

  2. Para conexiones TLS mutuas, Descargar credenciales de cliente: descargue wallet_databasename.zip en una ubicación segura. Asegúrese de que solo los usuarios autorizados tengan acceso a estos archivos.

    Consulte Download Client Credentials (Wallets) para obtener información sobre la descarga de credenciales de cliente para Autonomous Database.

  3. Verifique la versión de JDK por motivos de seguridad: si utiliza JDK11, JDK10 o JDK9, no necesita hacer nada para este paso. Si la versión de JDK es inferior a JDK8u162, debe descargar los archivos de políticas de jurisdicción de JCE de solidez limitada. Consulte el archivo README para obtener notas sobre la instalación. Download the JCE files from Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download.
  4. Comprobación de la versión del controlador JDBC: descargue un controlador JDBC Thin soportado (ojdbc8.jar y ucp.jar). También necesita los archivos jar adicionales: oraclepki.jar, osdt_core.jar y osdt_cert.jar para su uso con carteras de Oracle.

    Las versiones soportadas son:

    • JDBC Thin: 11.2.0.4 (o posterior con un parche puntual para el bug 28492769), 12.2 (o posterior con un parche puntual para el bug 28492769), 18 (versión base o posterior con un parche puntual para el bug 28492769), 19 (versión base o posterior) o 21 (versión base o posterior)

    Para las aplicaciones que utilizan la función Universal Connection Pool (UCP) de JDBC, se recomienda utilizar versiones 19.13 o superiores o 21.3 o superiores del controlador JDBC. Estas versiones incluyen un comportamiento de vaciado adecuado para minimizar el impacto en las aplicaciones cuando se realiza el mantenimiento planificado en Autonomous Database. UCP repondrá las conexiones en el pool de forma proactiva para que las conexiones activas no se vean afectadas por el mantenimiento.

    Para las versiones anteriores del controlador, también se puede solicitar un parche para el bug 31112088 mediante la presentación de una solicitud de servicio.

    Descargue las versiones soportadas: Descargas de archivos Jars complementarios y controladores JDBC de Oracle Database.

Uso de una cadena de conexión URL de JDBC con controlador fino JDBC y carteras

La cadena de conexión se encuentra en el archivo tnsnames.ora, que forma parte de la descarga de credenciales de cliente. El archivo tnsnames.ora contiene los nombres de servicio predefinidos. Cada servicio tiene su propio alias TNS y cadena de conexión.

A continuación, se muestra una entrada de ejemplo, con dbname_high como alias TNS y una cadena de conexión en 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)))

Defina la ubicación de tnsnames.ora con la propiedad TNS_ADMIN de una de las siguientes formas:

  • Como parte de la cadena de conexión (solo con el controlador JDBC 18.3 o posterior)
  • Como propiedad del sistema, -Doracle.net.tns_admin
  • Como propiedad de conexión (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN)

Con el controlador JDBC 18.3, la cadena de conexión incluye el alias TNS y la propiedad de conexión TNS_ADMIN.

Cadena de conexión de ejemplo con el controlador JDBC 18.3 (Linux)

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

Cadena de conexión de ejemplo con el controlador JDBC 18.3 (Windows):

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

En la propiedad de conexión TNS_ADMIN se especifica lo siguiente:

  • La ubicación de tnsnames.ora.
  • La ubicación de los archivos de Oracle Wallet (ewallet.sso, ewallet.p12) o Java KeyStore (JKS) (truststore.jks, keystore.jks).
  • La ubicación de ojdbc.properties. Este archivo contiene las propiedades de conexión necesarias para utilizar carteras de Oracle o Java KeyStore (JKS).
Nota

Si utiliza controladores JDBC 12.2.0.1 o anteriores, la cadena de conexión solo contiene el alias TNS. Para conectarse con controladores JDBC antiguos:

  • Defina la ubicación de tnsnames.ora, ya sea como una propiedad del sistema con -Doracle.net.tns_admin o como una propiedad de conexión (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN).
  • Defina las propiedades de conexión relacionadas con la cartera o JKS además de TNS_ADMIN.

Por ejemplo, en este caso, define el alias TNS en DB_URL sin la parte TNS_ADMIN como:

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

Consulte Nombres de servicio de base de datos predefinidos para Autonomous Database para obtener más información.

Uso de una conexión JDBC con el controlador JDBC 18.3

Las aplicaciones que utilizan el controlador JDBC Thin se pueden conectar a instancias de Autonomous Database mediante carteras de Oracle o Java KeyStore (JKS).

Uso de Oracle Wallet

Para utilizar Java y el controlador JDBC Thin 18.3 para conectarse a Autonomous Database con Oracle Wallet, haga lo siguiente:

  1. Asegurarse de que se cumplen los requisitos: consulte Requisitos de la conexión del controlador JDBC Thin para conexiones con carteras (mTLS) para obtener más información.

  2. Verifique la conexión: puede utilizar un programa Java, un servlet o IDE para verificar la conexión a la base de datos. Una prueba sencilla es descargar DataSourceSample.java o UCPSample.java de Ejemplos de código JDBC y actualizar la URL de conexión para que tenga el alias TNS necesario y transfiera TNS_ADMIN, proporcionando la ruta para tnsnames.ora y los archivos de cartera. Además, en el código de origen de ejemplo, actualice el nombre de usuario y la contraseña de la base de datos. Por ejemplo:

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

    Si utiliza Microsoft Active Directory con una base de datos, en el código de origen de ejemplo, actualice el nombre de usuario con el nombre de usuario de Active Directory y actualice la contraseña con la contraseña de usuario de Active Directory. Consulte Uso de Microsoft Active Directory con Autonomous Database para obtener más información.
  3. Definir la ubicación de la cartera: el archivo de propiedades ojdbc.properties se carga previamente con la propiedad de conexión relacionada con la cartera.

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

    El archivo ojdbc.properties no se modifica. El valor de TNS_ADMIN determina la ubicación de la cartera.
  4. Crear y ejecutar: compile y ejecute el ejemplo para obtener una conexión correcta. Asegúrese de tener oraclepki.jar, osdt_core.jar y osdt_cert.jar en classpath. Por ejemplo:

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

La parte de la cartera de conexión automática del archivo zip de credenciales de cliente descargado de Autonomous Database elimina la necesidad de que la aplicación utilice la autenticación con nombre de usuario/contraseña.

Uso de Java KeyStore

Para utilizar Java y el controlador ligero JDBC 18.3 para conectarse a Autonomous Database con Java KeyStore (JKS), realice lo siguiente:

  1. Asegurarse de que se cumplen los requisitos: consulte Requisitos de la conexión del controlador JDBC Thin para conexiones con carteras (mTLS) para obtener más información.

  2. Haga clic en los detalles de la base de datos: puede utilizar un programa Java, un servlet o IDE para comprobar la conexión a la base de datos. Una prueba sencilla es descargar DataSourceSample.java o UCPSample.java de Ejemplos de código JDBC. En este ejemplo, utilice la URL de conexión como se muestra. Tenga en cuenta que la conexión DB_URL contiene el alias TNS, por ejemplo, dbname_high presente en tnsnames.ora. Puede proporcionar la ruta del archivo tnsnames.ora mediante la propiedad TNS_ADMIN como se muestra en la URL. Asegúrese de utilizar el nombre de usuario y la contraseña de la base de datos relacionados con la base de datos.

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

    Si utiliza Microsoft Active Directory con Autonomous Database, asegúrese de cambiar el código de origen de ejemplo para utilizar el nombre de usuario de Active Directory y la contraseña de usuario de Active Directory. Consulte Uso de Microsoft Active Directory con Autonomous Database para obtener más información.
  3. Defina las propiedades de conexión relacionadas con JKS: agregue las propiedades de conexión relacionadas con JKS al archivo ojdbc.properties. Las contraseñas keyStore y truststore son las contraseñas especificadas al descargar el archivo .zip de credenciales de cliente.

    Para utilizar la conectividad SSL en lugar de Oracle Wallet, especifique los archivos del almacén de claves y del almacén de confianza y su contraseña respectiva en el archivo ojdbc.properties de la siguiente forma:

    
    # 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

    Asegúrese de comentar la propiedad relacionada con la cartera en ojdbc.properties. Por ejemplo:
    
    # Property for using Oracle Wallets
    # oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
  4. Crear y ejecutar: compile y ejecute el ejemplo para obtener una conexión correcta. Por ejemplo:

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

Conexión mediante el controlador JDBC Thin 12.2 o anterior

Si utiliza el controlador JDBC 12.2.0.2 o superior, defina las propiedades de Java antes de iniciar la aplicación. Normalmente, las propiedades se definen en el script de inicio de la aplicación.

Si no puede utilizar los controladores JDBC más recientes de la versión 18.3, puede conectarse a Autonomous Database mediante 12.2.0.2 u otros controladores JDBC anteriores. Los controladores JDBC 12.2 o anteriores no son compatibles con el archivo ojdbc.properties. Con versiones anteriores del controlador JDBC, debe transferir carteras o propiedades relacionadas con JKS como propiedades del sistema o como propiedades de conexión para establecer una conexión.

Uso de Oracle Wallet

Para utilizar Java y los controladores JDBC 12.2 o anteriores para conectarse a Autonomous Database con Oracle Wallet, haga lo siguiente:

  1. Asegurarse de que se cumplen los requisitos: consulte Requisitos de la conexión del controlador JDBC Thin para conexiones con carteras (mTLS) para obtener más información.

  2. Verifique la conexión: puede utilizar un programa Java, un servlet o IDE para verificar la conexión a la base de datos. Una prueba sencilla es descargar DataSourceSample.java o UCPSample.java de Ejemplos de código JDBC y actualizar la URL de conexión para que tenga el alias TNS necesario. Además, actualice el código de origen de ejemplo para utilizar el nombre de usuario y la contraseña de la base de datos. Por ejemplo:

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

    Si utiliza Microsoft Active Directory con Autonomous Database, actualice el código de origen de ejemplo para utilizar el nombre de usuario de Active Directory y la contraseña de usuario de Active Directory. Consulte Uso de Microsoft Active Directory con Autonomous Database para obtener más información.
  3. Defina la ubicación de la cartera: agregue OraclePKIProvider al final de la lista de proveedores en el archivo java.security (este archivo forma parte de la instalación de JRE ubicada en $JRE_HOME/jre/lib/security/java.security), que normalmente tiene el siguiente aspecto:

    security.provider.14=oracle.security.pki.OraclePKIProvider
  4. Crear y ejecutar: compile y ejecute el ejemplo para obtener una conexión correcta. Asegúrese de tener oraclepki.jar, osdt_core.jar y osdt_cert.jar en classpath. Además, debe transferir las propiedades de conexión. Actualice las propiedades con la ubicación donde se encuentran los archivos de cartera y tnsnames.ora.

    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

Estos son ejemplos del sistema Windows. Agregue un carácter de continuación \ si está configurando propiedades –D en varias líneas en UNIX (Linux o Mac).

Uso de Java KeyStore

Para utilizar Java y los controladores JDBC Thin 12.2 o anteriores para conectarse a Autonomous Database con Java KeyStore (JKS), haga lo siguiente:

  1. Asegurarse de que se cumplen los requisitos: consulte Requisitos de la conexión del controlador JDBC Thin para conexiones con carteras (mTLS) para obtener más información.

  2. Verifique la conexión: puede utilizar un programa Java, un servlet o IDE para verificar la conexión a la base de datos. Una prueba sencilla es descargar DataSourceSample.java o UCPSample.java de ejemplos de código JDBC y actualizar la URL de conexión para que tenga el alias TNS necesario y transfiera TNS_ADMIN, proporcionando la ruta para tnsnames.ora y actualice la URL de conexión para que tenga el alias TNS necesario. Además, en el código de origen de ejemplo, actualice el nombre de usuario y la contraseña de la base de datos. Por ejemplo:

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

    Si utiliza Microsoft Active Directory con Autonomous Database, actualice el código de origen de ejemplo para utilizar el nombre de usuario de Active Directory y la contraseña de usuario de Active Directory. Consulte Uso de Microsoft Active Directory con Autonomous Database para obtener más información.
  3. Crear y ejecutar: compile y ejecute el ejemplo para obtener una conexión correcta. Debe transferir las propiedades de conexión como se muestra. Actualizar las propiedades con la ubicación donde se colocan los archivos tnsnames.ora y JKS. Si desea transferir estas propiedades de conexión mediante programación, consulte DataSourceForJKS.java. Por ejemplo:

    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

Conexiones JDBC Thin con un proxy HTTP

Si el cliente está protegido por un firewall y la configuración de red requiere un proxy HTTP para conectarse a Internet, debe utilizar JDBC Thin Client 18.1 o superior, lo que permite las conexiones mediante proxies HTTP.

Para conectarse a Autonomous Database mediante un proxy HTTPS, abra y actualice el archivo tnsnames.ora. Agregue el nombre de host del proxy HTTP (https_proxy) y el puerto (https_proxy_port) a la cadena de conexión. Sustituya los valores por la información de proxy HTTPS. Por ejemplo:

  1. Agregue el nombre de host y el puerto del proxy HTTP a las definiciones de conexión en tnsnames.ora. Debe agregar los parámetros https_proxy y https_proxy_port en la sección de direcciones de las definiciones de conexión. Por ejemplo, con lo siguiente se define el proxy HTTP en proxyhostname y el puerto de proxy HTTP en 80; sustituya estos valores por la información de 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

  • Las versiones de cliente JDBC Thin anteriores a la 18.1 no admiten conexiones mediante proxy HTTP.

  • La conexión correcta depende de configuraciones de proxy específicas y el rendimiento de las transferencias de datos dependerá de la capacidad de proxy. Oracle no recomienda el uso de esta función en entornos de producción en los que el rendimiento sea fundamental.

  • Puede que la configuración de tnsnames.ora para el proxy HTTP no sea suficiente, dependiendo de la configuración de red y las políticas de seguridad de su organización. Por ejemplo, algunas redes necesitan un nombre de usuario y una contraseña para el proxy HTTP.

  • En todos los casos, póngase en contacto con el administrador de red para abrir conexiones de salida a hosts en el dominio oraclecloud.com mediante el puerto relevante sin pasar por un proxy HTTP.