Actualización de aplicaciones para la conexión a las instancias de base de datos de Oracle con los nuevos certificados SSL/TLS - Amazon Relational Database Service

Actualización de aplicaciones para la conexión a las instancias de base de datos de Oracle con los nuevos certificados SSL/TLS

El 13 de enero de 2023, Amazon RDS publicó nuevos certificados de entidades de certificación (CA) para la conexión a sus instancias de base de datos de RDS mediante la capa de sockets seguros o seguridad de la capa de transporte (SSL/TLS). Después, puede encontrar la información sobre la actualización de sus aplicaciones para utilizar los nuevos certificados.

Este tema puede ayudarle a determinar si las aplicaciones de cualquier cliente utilizan SSL/TLS para conectarse a sus instancias de base de datos.

importante

Cuando se cambia el certificado de una instancia de base de datos de Amazon RDS for Oracle, solo se reinicia el agente de escucha de la base de datos. La instancia de base de datos no se reinicia. Las conexiones de base de datos existentes no se ven afectadas, pero las conexiones nuevas tendrán errores durante el breve período en que se reinicia el agente de escucha.

nota

Para las aplicaciones de clientes que utilizan SSL/TLS para conectarse a sus instancias de base de datos, debe actualizar los almacenes de confianza de la aplicación de su cliente para incluir los nuevos certificados de CA.

Después actualizar sus certificados de CA en los almacenes de confianza de la aplicación de su cliente, puede rotar los certificados en sus instancias de base de datos. Recomendamos encarecidamente probar estos procedimientos en un entorno de desarrollo o ensayo antes de implementarlos en sus entornos de producción.

Para obtener más información acerca de la rotación de certificados, consulte Rotar certificados SSL/TLS. Para obtener más información acerca de cómo descargar certificados, consulte Uso de SSL/TLS para cifrar una conexión a una instancia o clúster de base de datos. Para obtener información sobre el uso de SSL/TLS con las instancias de base de datos de Oracle, consulte Capa de conexión segura de Oracle.

Averiguar si las aplicaciones se conectan mediante SSL

Si su instancia de base de datos de Oracle utiliza una grupo de opciones con la opción SSL añadida, puede que utilice SSL. Compruébelo siguiendo las instrucciones en Descripción de opciones y configuración de opciones para un grupo de opciones. Para obtener información acerca de la opción SSL, consulte Capa de conexión segura de Oracle.

Compruebe el registro del agente de escucha para determinar si existen conexiones SSL. A continuación, se muestra un ejemplo del resultado en un registro del agente de escucha.

date time * (CONNECT_DATA=(CID=(PROGRAM=program) (HOST=host)(USER=user))(SID=sid)) * (ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=port)) * establish * ORCL * 0

Cuando PROTOCOL tiene el valor tcps para cualquier entrada, muestra una conexión SSL. Sin embargo, cuando HOST es 127.0.0.1, puede ignorar la entrada. Las conexiones de 127.0.0.1 son un agente de administración local en la instancia de base de datos. Estas conexiones no son conexiones SSL externas. Por lo tanto, tiene aplicaciones conectándose utilizando SSL si ve entradas del registro del agente de escucha en las que PROTOCOL es tcps y HOST no127.0.0.1.

Para comprobar el registro del agente de escucha, puede publicar el registro en Amazon CloudWatch Logs. Para obtener más información, consulte Publicación de registros de Oracle en Amazon CloudWatch Logs.

Actualización del almacén de confianza de su aplicación

Puede actualizar el almacén de confianza para las aplicaciones que utilizan SQL*Plus o JDBC para las conexiones SSL/TLS.

Actualización del almacén de confianza de su aplicación para SQL*Plus

Puede actualizar el almacén de confianza para las aplicaciones que utilizan SQL*Plus para las conexiones SSL/TLS.

nota

Cuando actualice el almacén de confianza, puede retener certificados antiguos además de añadir los nuevos certificados.

Para actualizar el almacén de confianza para las aplicaciones de SQL*Plus
  1. Descargue el certificado raíz que funciona con todas las regiones de AWS y coloque el archivo en el directorio ssl_wallet.

    Para obtener información sobre la descarga del certificado raíz, consulte Uso de SSL/TLS para cifrar una conexión a una instancia o clúster de base de datos.

  2. Ejecute el siguiente comando para actualizar el wallet de Oracle.

    prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert $ORACLE_HOME/ssl_wallet/ssl-cert.pem -auto_login_only

    Reemplace el nombre de archivo por el que ha descargado.

  3. Ejecute el comando siguiente para confirmar que el wallet se ha actualizado correctamente.

    prompt>orapki wallet display -wallet $ORACLE_HOME/ssl_wallet

    Su resultado debe contener lo siguiente.

    Trusted Certificates: Subject: CN=Amazon RDS Root 2019 CA,OU=Amazon RDS,O=Amazon Web Services\, Inc.,L=Seattle,ST=Washington,C=US

Actualización del almacén de confianza de su aplicación para JDBC

Puede actualizar el almacén de confianza para las aplicaciones que utilizan JDBC para las conexiones SSL/TLS.

Para obtener información sobre la descarga del certificado raíz, consulte Uso de SSL/TLS para cifrar una conexión a una instancia o clúster de base de datos.

Para obtener secuencias de comandos de ejemplo que importan certificados, consulte Script de muestra para la importación de certificados en su almacén de confianza.

Ejemplo de código Java para el establecimiento de conexiones SSL

El siguiente ejemplo de código muestra cómo configurar la conexión SSL mediante JDBC.

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class OracleSslConnectionTest { private static final String DB_SERVER_NAME = "<dns-name-provided-by-amazon-rds>"; private static final Integer SSL_PORT = "<ssl-option-port-configured-in-option-group>"; private static final String DB_SID = "<oracle-sid>"; private static final String DB_USER = "<user name>"; private static final String DB_PASSWORD = "<password>"; // This key store has only the prod root ca. private static final String KEY_STORE_FILE_PATH = "<file-path-to-keystore>"; private static final String KEY_STORE_PASS = "<keystore-password>"; public static void main(String[] args) throws SQLException { final Properties properties = new Properties(); final String connectionString = String.format( "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))(CONNECT_DATA=(SID=%s)))", DB_SERVER_NAME, SSL_PORT, DB_SID); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); properties.put("oracle.jdbc.J2EE13Compliant", "true"); properties.put("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH); properties.put("javax.net.ssl.trustStoreType", "JKS"); properties.put("javax.net.ssl.trustStorePassword", KEY_STORE_PASS); final Connection connection = DriverManager.getConnection(connectionString, properties); // If no exception, that means handshake has passed, and an SSL connection can be opened } }
importante

Después de que haya determinado que sus conexiones de base de datos utilizan SSL/TLS y haya actualizado el almacén de confianza de su aplicación, puede actualizar su base de datos para que utilice los certificados de rds-ca-rsa2048-g1. Para obtener instrucciones, consulte el paso 3 en Actualización del certificado de entidad de certificación modificando la instancia o el clúster de base de datos.