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.
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 de0.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.
- Conexiones con el controlador JDBC Thin: requisitos previos de conexión con carteras (mTLS)
Las aplicaciones que utilizan el controlador JDBC Thin soportan la autenticación TLS y 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. - Uso de una cadena de conexión de URL de JDBC con el controlador JDBC Thin y las carteras
La cadena de conexión se encuentra en el archivotnsnames.ora
, que forma parte de la descarga de credenciales de cliente. El archivotnsnames.ora
contiene los nombres de servicio predefinidos. Cada servicio tiene su propio alias TNS y cadena de conexió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). - Conexión mediante 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. - Conexiones Thin JDBC 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 el cliente Thin JDBC 18.1 o superior, que activa las conexiones a través de proxies HTTP.
Tema principal: Conexión con el controlador JDBC Thin
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:
Tema principal: Conexiones de JDBC Thin con una cartera (mTLS)
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.
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).
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.
Tema principal: Conexiones de JDBC Thin con una cartera (mTLS)
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:
-
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.
-
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 paratnsnames.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. -
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 archivoojdbc.properties
. El valor deTNS_ADMIN
determina la ubicación de la cartera. -
Compilar y ejecutar: compile y ejecute el ejemplo para obtener una conexión correcta. Asegúrese de que tiene
oraclepki.jar
,osdt_core.jar
yosdt_cert.jar
enclasspath
. Por ejemplo:java –classpath ./lib/ojdbc8.jar:./lib/ucp.jar:./lib/oraclepki.jar:./lib/osdt_core.jar:./lib/osdt_cert.jar:. UCPSample
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:
-
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.
-
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 entnsnames.ora
. Puede proporcionar la ruta de acceso para el archivotnsnames.ora
mediante la propiedadTNS_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. -
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 enojdbc.properties
. Por ejemplo:# Property for using Oracle Wallets # oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=${TNS_ADMIN})))
-
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
Tema principal: Conexiones de JDBC Thin con una cartera (mTLS)
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:
-
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.
-
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. -
Definir la ubicación de la cartera: agregue
OraclePKIProvider
al final de la lista de proveedores en el archivojava.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
-
Compilar y ejecutar: compile y ejecute el ejemplo para obtener una conexión correcta. Asegúrese de tener
oraclepki.jar
,osdt_core.jar
yosdt_cert.jar
enclasspath
. Además, debe transferir las propiedades de conexión. Actualice las propiedades con la ubicación en la que se encuentran los archivostnsnames.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
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:
-
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.
-
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 paratnsnames.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. -
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
Tema principal: Conexiones de JDBC Thin con una cartera (mTLS)
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:
-
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 enproxyhostname
y el puerto de proxy HTTP en80
; 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)
)
)
-
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.
Tema principal: Conexiones de JDBC Thin con una cartera (mTLS)