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.
Temas
- Determinación de si las aplicaciones se conectan a sus instancias de base de datos de PostfreSQL mediante SSL
- Determinación de si un cliente necesita una verificación de certificados para conectarse
- Actualización del almacén de confianza de su aplicación
- Uso de conexiones SSL/TLS para diferentes tipos de aplicaciones
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 Grupos de parámetros para Amazon RDS.
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 para clientes con libpq (como psql) y JDBC está establecido en prefer
. 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
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 entornoPGSSLMODE
),sslrootcert
(variable de entornoPGSSLROOTCERT
).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.