Conexiones de 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 JDBC Thin 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 redes virtuales en la nube permitidas: configuración con una lista de control de acceso (ACL)

    Si su instancia de Autonomous Database está en un punto final público sin ninguna ACL, puede agregar 0.0.0.0/0 como ACL de CIDR y activar la autenticación TLS. La adición de 0.0.0.0/0 como ACL de CIDR es idéntica a tener Autonomous Database en un punto final público sin ACL.

Consulte Conexiones seguras a Autonomous Database con mTLS o con TLS para obtener más información.

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

Las aplicaciones que utilizan el controlador JDBC Thin soportan TLS y autenticación TLS mutua (mTLS). El uso de la autenticación mTLS requiere que proporcione las credenciales de la 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. Aprovisionamiento de Autonomous Database: cree una base de datos y obtenga sus credenciales de base de datos (nombre de usuario y contraseña).
  2. Para las conexiones TLS mutuas, Descargar credenciales de cliente: descomprima wallet_nombre_dato.zip en una ubicación segura. Asegúrese de que solo los usuarios autorizados tengan acceso a estos archivos.

    Consulte Descarga de Credenciales de Cliente (carteras) para ver información sobre cómo descargar credenciales de cliente para Autonomous Database.

  3. Verifique la versión de JDK por seguridad: si utiliza JDK11, JDK10 o JDK9, no es necesario que realice ninguna acción para este paso. Si su versión de JDK es inferior a JDK8u162, deberá descargar los archivos de política de jurisdicción de JCE Unlimited Strength. Consulte el archivo README para obtener notas de instalación. Descargue los archivos JCE desde Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download.
  4. Comprobar 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 utilizarlos con carteras de Oracle.

    Las versiones admitidas 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 superior, o 21.3 o superior del controlador JDBC. Estas versiones incluyen un comportamiento de drenaje adecuado para minimizar el impacto en las aplicaciones cuando se realiza un mantenimiento planificado en Autonomous Database. UCP repondrá las conexiones del 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: Controlador JDBC de Oracle Database y descargas de archivos jar complementarios.

Uso de una Cadena de Conexión de URL de JDBC con el Controlador JDBC Thin 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 de 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 maneras:

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

Mediante 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"

La propiedad de conexión TNS_ADMIN especifica lo siguiente:

  • Ubicación de tnsnames.ora.
  • Ubicación de los archivos KeyStore (JKS) de Oracle Wallet (ewallet.sso, ewallet.p12) o Java (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 antiguos, la cadena de conexión sólo contiene el alias TNS. Para conectarse mediante controladores JDBC anteriores:

  • 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, debe definir 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 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 pueden conectarse a bases de datos autónomas mediante Oracle Wallets 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, realice lo siguiente:

  1. Asegúrese de que se cumplen los requisitos: Consulte Requisitos de conexión del controlador ligero JDBC para conexiones con carteras (mTLS) para obtener más información.

  2. Verificar 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 consiste en 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 de acceso para tnsnames.ora y los archivos de cartera. Además, en el código fuente 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

    No modifique el archivo ojdbc.properties. El valor de TNS_ADMIN determina la ubicación de la cartera.
  4. Compilar y ejecutar: compile y ejecute el ejemplo para obtener una conexión correcta. Asegúrese de que tiene 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 cartera de conexión automática del archivo zip de credenciales de cliente descargadas de Autonomous Database elimina la necesidad de que la aplicación utilice la autenticación de nombre de usuario/contraseña.

Uso de Java KeyStore

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

  1. Asegúrese de que se cumplen los requisitos: Consulte Requisitos de conexión del controlador ligero JDBC para conexiones con carteras (mTLS) para obtener más información.

  2. Preparar 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 consiste en 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 de TNS, por ejemplo, dbname_high presente en tnsnames.ora. Puede proporcionar la ruta de acceso para el 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. Definir propiedades de conexión relacionadas con JKS: agregue las propiedades de conexión relacionadas con JKS al archivo ojdbc.properties. La contraseña de almacén de confianza y keyStore son la contraseña especificada 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 sus respectivas contraseñas 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. Compilar 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 con el controlador JDBC Thin 12.2 o anterior

Si utiliza el controlador JDBC 12.2.0.2 o anterior, 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, puede conectarse a Autonomous Database mediante 12.2.0.2 u otros controladores JDBC anteriores. Los controladores JDBC 12.2 o anteriores no admiten el archivo ojdbc.properties. Con las 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, realice lo siguiente:

  1. Asegúrese de que se cumplen los requisitos: Consulte Requisitos de conexión del controlador ligero JDBC para conexiones con carteras (mTLS) para obtener más información.

  2. Verificar 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 consiste en 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 fuente 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 y la contraseña de usuario de Active Directory 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: 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 suele tener el siguiente aspecto:

    security.provider.14=oracle.security.pki.OraclePKIProvider
  4. Compilar 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 en la que se encuentran los archivos tnsnames.ora y de cartera.

    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á definiendo las propiedades –D en varias líneas en UNIX (Linux o una 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), realice lo siguiente:

  1. Asegúrese de que se cumplen los requisitos: Consulte Requisitos de conexión del controlador ligero JDBC para conexiones con carteras (mTLS) para obtener más información.

  2. Verificar 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 consiste en 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 de acceso para tnsnames.ora y actualizando la URL de conexión para que tenga el alias TNS necesario. Además, en el código fuente 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 y la contraseña de usuario de Active Directory de Active Directory. Consulte Uso de Microsoft Active Directory con Autonomous Database para obtener más información.
  3. Compilar y ejecutar: compile y ejecute el ejemplo para obtener una conexión correcta. Debe transferir las propiedades de conexión como se muestra. Actualice las propiedades con la ubicación en la que 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á detrás de 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, que activa las conexiones a través de proxies HTTP.

Para conectarse a Autonomous Database a través de 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 puerto y el nombre de host 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, lo siguiente 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 del proxy. Oracle no recomienda utilizar 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 la política de seguridad del usuario. 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 las conexiones salientes a los hosts en el dominio oraclecloud.com mediante el puerto correspondiente sin pasar por un proxy HTTP.