Actualización de aplicaciones para la conexión a las instancias de base de datos de PostgreSQL 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 PostgreSQL con los nuevos certificados SSL/TLS

Los certificados utilizados para capas de sockets seguros o seguridad de la capa de transporte (SSL/TLS) suelen tener una vida útil establecida. Cuando los proveedores de servicios actualizan sus certificados de la autoridad de certificación (CA), los clientes deben actualizar sus aplicaciones para utilizar los certificados nuevos. A continuación, puede encontrar información sobre cómo determinar si sus aplicaciones cliente utilizan SSL/TLS para conectarse a su instancia de base de datos de Amazon RDS for PostgreSQL. También encontrará información sobre cómo comprobar si esas aplicaciones verifican el certificado del servidor cuando se conectan.

nota

Una aplicación cliente configurada para verificar el certificado del servidor antes de la conexión SSL/TLS debe tener un certificado de CA válido en el almacén de confianza del cliente. Actualice el almacén de confianza del cliente cuando sea necesario para acceder a certificados nuevos.

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. Se recomienda probar estos procedimientos en un entorno que no sea de producción antes de implementarlos en 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 PostgreSQL, consulte Uso de SSL con una instancia de base de datos PostgreSQL.

Determinación de si las aplicaciones se conectan a sus instancias de base de datos de PostfreSQL mediante SSL

Compruebe la configuración de la instancia de base de datos para obtener el valor del parámetro de rds.force_ssl. De forma predeterminada, el parámetro rds.force_ssl está configurado en 0 (desactivado) para las instancias de base de datos que utilizan versiones de PostgreSQL anteriores a la versión 15. De forma predeterminada, rds.force_ssl está configurado en 1 (activado) para las instancias de base de datos que utilizan PostgreSQL versión 15 y versiones principales posteriores. Si el parámetro rds.force_ssl está configurado como 1 (activado), se precisa que los clientes utilicen SSL/TLS para las conexiones. Para obtener más información acerca de los grupos de parámetros, consulte Working with parameter groups (Trabajar con grupos de parámetros).

Si utiliza la versión 9.5 o una versión importante anterior de RDS PostgreSQL y rds.force_ssl no está configurado como 1 (activado), consulte la vista pg_stat_ssl para comprobar las conexiones que utilizan SSL. Por ejemplo, la siguiente consulta devuelve solo las conexiones SSL y la información acerca de los clientes que utilizan SSL.

SELECT datname, usename, ssl, client_addr FROM pg_stat_ssl INNER JOIN pg_stat_activity ON pg_stat_ssl.pid = pg_stat_activity.pid WHERE ssl is true and usename<>'rdsadmin';

Solo las filas que utilizan conexiones SSL/TLS se muestran con información sobre la conexión. A continuación, se muestra un ejemplo del resultado.

datname | usename | ssl | client_addr ----------+---------+-----+------------- benchdb | pgadmin | t | 53.95.6.13 postgres | pgadmin | t | 53.95.6.13 (2 rows)

Esta consulta solo muestra las conexiones actuales en el momento de la consulta. La ausencia de resultados no indica que no haya ninguna aplicación utilizando conexiones SSL. Se pueden establecer otras conexiones SSL en un momento diferente.

Determinación de si un cliente necesita una verificación de certificados para conectarse

Cuando un cliente, como psql o JDBC, está configurado con soporte de SSL, primero el cliente intenta conectarse a la base de datos con SSL de manera predeterminada. SI el cliente no puede conectarse con SSL, vuelve a la conexión sin SSL. El modo sslmode predeterminado utilizado es diferente entre los clientes basados en libpq (como psql) y JDBC. Los clientes basados en libpq utilizan de manera predeterminada prefer mientras que los clientes JDBC utilizan verify-full. El certificado del servidor se verifica solo cuando se proporciona sslrootcert con sslmode configurado como verify-ca o verify-full. Se lanza un error si el certificado no es válido.

Utilice PGSSLROOTCERT para verificar el certificado con la variable de entorno PGSSLMODE, con PGSSLMODE establecido como verify-ca o verify-full.

PGSSLMODE=verify-full PGSSLROOTCERT=/fullpath/ssl-cert.pem psql -h pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com -U masteruser -d postgres

Utilice el argumento sslrootcert para verificar el certificado con sslmode en el formato de la cadena de conexión, con sslmode establecido como verify-ca o verify-full para verificar el certificado.

psql "host=pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com sslmode=verify-full sslrootcert=/full/path/ssl-cert.pem user=masteruser dbname=postgres"

Por ejemplo, en el caso anterior, si utiliza un certificado raíz no válido, observa un error similar a lo siguiente en su cliente.

psql: SSL error: certificate verify failed

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

Para obtener información sobre la actualización del almacén de confianza para las aplicaciones de PostgreSQL, consulte Conexiones TCP/IP seguras con SSL en la documentación de PostgreSQL.

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.

nota

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

Uso de conexiones SSL/TLS para diferentes tipos de aplicaciones

Lo siguiente proporciona información acerca del uso de conexiones SSL/TLS para diferentes tipo de aplicaciones:

  • psql

    El cliente se ha invocado desde la línea de comandos especificando las opciones como una cadena de conexión o como variables del entorno. Para las conexiones SSL/TLS, las opciones relevantes son sslmode (variable de entorno PGSSLMODE), sslrootcert (variable de entorno PGSSLROOTCERT).

    Para obtener la lista completa de opciones, consulte Palabras de clave del parámetro en la documentación de PostgreSQL. Para obtener la lista completa de variables de entorno, consulte Variables de entorno en la documentación de PostgreSQL.

  • pgAdmin

    Este cliente basado en el navegador es una interfaz más intuitiva para conectarse a la base de datos de PostgreSQL.

    Para obtener información sobre la configuración de las conexiones, consulte la documentación de pgAdmin.

  • JDBC

    JDBC habilita las conexiones de base de datos con aplicaciones de Java.

    Para obtener información general sobre la conexión a la base de datos de PostgreSQL con JDBC, consulte Connecting to the database (Conexión con la base de datos) en la documentación del controlador JDBC de PostgreSQL. Para obtener información sobre la conexión con SSL/TLS, consulte Configuring the client (Configuración del cliente) en la documentación del controlador JDBC de PostgreSQL.

  • Python

    Una biblioteca de Python popular para la conexión a las bases de datos de PostgreSQL es psycopg2.

    Para obtener información acerca del uso de psycopg2, consulte la documentación de psycopg2. Para obtener un breve tutorial sobre cómo conectarse a una base de datos de PostgreSQL, consulte Tutorial de psycopg2. Puede encontrar información acerca de las opciones que acepta del comando de conexión en El contenido del módulo psycopg2.

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.