

# Protección de conexiones a RDS for PostgreSQL con SSL/TLS
<a name="PostgreSQL.Concepts.General.Security"></a>

RDS for PostgreSQL admite el cifrado de la capa de sockets seguros (SSL) para las instancias de base de datos de PostgreSQL. Con SSL, puede cifrar una conexión de PostgreSQL entre sus aplicaciones y sus instancias de base de datos de PostgreSQL. También puede obligar a todas las conexiones con su instancia de base de datos PostgreSQL a usar SSL. RDS for PostgreSQL también admite la seguridad de la capa de transporte (TLS), el protocolo sucesor de la SSL.

Para obtener más información sobre Amazon RDS y la protección de datos, incluido el cifrado de conexiones mediante SSL/TLS, consulte [Protección de datos en Amazon RDS](DataDurability.md).

**Topics**
+ [Uso de SSL con una instancia de base de datos PostgreSQL](PostgreSQL.Concepts.General.SSL.md)
+ [Actualización de aplicaciones para la conexión a las instancias de base de datos de PostgreSQL con los nuevos certificados SSL/TLS](ssl-certificate-rotation-postgresql.md)

# Uso de SSL con una instancia de base de datos PostgreSQL
<a name="PostgreSQL.Concepts.General.SSL"></a>

Amazon RDS admite el cifrado de la Capa de conexión segura (SSL) para las instancias de base de datos de PostgreSQL. Con SSL, puede cifrar una conexión de PostgreSQL entre sus aplicaciones y sus instancias de base de datos de PostgreSQL. De forma predeterminada, RDS for PostgreSQL utiliza y espera que todos los clientes se conecten mediante SSL/TLS, pero también puede hacer que sea obligatorio. RDS para PostgreSQL admite las versiones 1.1, 1.2 y 1.3 de la seguridad de la capa de transporte (TLS).

Para obtener la información general acerca de la compatibilidad con SSL y las bases de datos de PostgreSQL, consulte [Compatibilidad con SSL](https://www.postgresql.org/docs/11/libpq-ssl.html) en la documentación de PostgreSQL. Para obtener información sobre el uso de una conexión SSL a través de JDBC, consulte [Configuración del cliente](https://jdbc.postgresql.org/documentation/head/ssl-client.html) en la documentación de PostgreSQL.

La compatibilidad con SSL está disponible en todas las regiones de AWS para PostgreSQL. Amazon RDS crea un certificado SSL para su instancia de base de datos de PostgreSQL cuando se crea la instancia. Si se habilita la verificación con certificado SSL, el certificado incluye el punto de enlace de la instancia de base de datos como nombre común (CN) que el certificado de SSL debe proteger frente a los ataques de suplantación. 

**Topics**
+ [Conectar con una instancia de base de datos PostgreSQL a través de SSL](#PostgreSQL.Concepts.General.SSL.Connecting)
+ [Requerir una conexión SSL a una instancia de base de datos PostgreSQL](#PostgreSQL.Concepts.General.SSL.Requiring)
+ [Determinar el estado de la conexión SSL](#PostgreSQL.Concepts.General.SSL.Status)
+ [Conjuntos de cifrado SSL en RDS for PostgreSQL](#PostgreSQL.Concepts.General.SSL.Ciphers)

## Conectar con una instancia de base de datos PostgreSQL a través de SSL
<a name="PostgreSQL.Concepts.General.SSL.Connecting"></a>

**Para conectar con una instancia de base de datos PostgreSQL a través de SSL**

1. Descargue el certificado.

   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 un clúster de base de datos](UsingWithRDS.SSL.md).

1. Conecte su instancia de base de datos de PostgreSQL a través de SSL.

   Cuando se conecte utilizando SSL, su cliente podrá elegir si verifica la cadena de certificados. Si sus parámetros de conexión especifican `sslmode=verify-ca` o `sslmode=verify-full`, su cliente precisa que los certificados de CA de RDS estén en su almacén de confianza o se haga referencia a ellos en la URL de conexión. Este requisito es para verificar la cadena de certificados que firma su certificado de base de datos.

   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 y JDBC utilizan de manera predeterminada `prefer`.

   Use el parámetro `sslrootcert` para hacer referencia al certificado, por ejemplo: `sslrootcert=rds-ssl-ca-cert.pem`.

A continuación, se muestra un ejemplo de cómo se utiliza `psql` para conectarse a una instancia de base de datos de PostgreSQL mediante SSL con verificación de certificados.

```
$ psql "host=db-name.555555555555.ap-southeast-1.rds.amazonaws.com 
    port=5432 dbname=testDB user=testuser sslrootcert=rds-ca-rsa2048-g1.pem sslmode=verify-full"
```

## Requerir una conexión SSL a una instancia de base de datos PostgreSQL
<a name="PostgreSQL.Concepts.General.SSL.Requiring"></a>

Puede exigir que las conexiones a la instancia de base de datos PostgreSQL usen SSL por medio del parámetro `rds.force_ssl`. El valor predeterminado del valor `rds.force_ssl` es 1 (activado) para RDS para PostgreSQL versión 15 y posteriores. Para todas las demás versiones principales de RDS para PostgreSQL 14 y anteriores, el valor predeterminado de este parámetro es 0 (desactivado). Puede definir el parámetro `rds.force_ssl` en 1 (activado) fin de imponer SSL/TLS para las conexiones al clúster de base de datos. Puede definir el parámetro `rds.force_ssl` en 1 (activado) para imponer SSL para las conexiones a la instancia de base de datos. 

Para cambiar el valor de este parámetro, debe crear un grupo de parámetros de base de datos personalizado. A continuación, cambie el valor de `rds.force_ssl` en el grupo de parámetros de base de datos personalizado a `1` para activar esta característica. Si prepara el grupo de parámetros de base de datos personalizado antes de crear la instancia de base de datos de RDS for PostgreSQL, puede elegirlo (en lugar de un grupo de parámetros predeterminado) durante el proceso de creación. Si lo hace después de que la instancia de base de datos de RDS for PostgreSQL ya se esté ejecutando, debe reiniciar la instancia para que utilice el grupo de parámetros personalizado. Para obtener más información, consulte [Grupos de parámetros para Amazon RDS](USER_WorkingWithParamGroups.md).

Cuando la característica `rds.force_ssl` está activa en la instancia de base de datos, los intentos de conexión que no utilizan SSL se rechazan con el siguiente mensaje:

```
$ psql -h db-name.555555555555.ap-southeast-1.rds.amazonaws.com port=5432 dbname=testDB user=testuser
psql: error: FATAL: no pg_hba.conf entry for host "w.x.y.z", user "testuser", database "testDB", SSL off
```

## Determinar el estado de la conexión SSL
<a name="PostgreSQL.Concepts.General.SSL.Status"></a>

El estado cifrado de su conexión se muestra en el banner de inicio de sesión al establecer conexión con la instancia de base de datos:

```
Password for user master: 
psql (10.3) 
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) 
Type "help" for help.
postgres=>
```

También puede cargar la extensión `sslinfo` y llamar después a la función `ssl_is_used()` para determinar si se está usando SSL. La función devuelve `t` si la conexión usa SSL; de lo contrario, devuelve `f`.

```
postgres=> CREATE EXTENSION sslinfo;
CREATE EXTENSION
postgres=> SELECT ssl_is_used();
ssl_is_used
---------
t
(1 row)
```

Para obtener información más detallada, puede usar la siguiente consulta para obtener información de `pg_settings`:

```
SELECT name as "Parameter name", setting as value, short_desc FROM pg_settings WHERE name LIKE '%ssl%';
             Parameter name             |                  value                  |                      short_desc
----------------------------------------+-----------------------------------------+-------------------------------------------------------
 ssl                                    | on                                      | Enables SSL connections.
 ssl_ca_file                            | /rdsdbdata/rds-metadata/ca-cert.pem     | Location of the SSL certificate authority file.
 ssl_cert_file                          | /rdsdbdata/rds-metadata/server-cert.pem | Location of the SSL server certificate file.
 ssl_ciphers                            | HIGH:!aNULL:!3DES                       | Sets the list of allowed SSL ciphers.
 ssl_crl_file                           |                                         | Location of the SSL certificate revocation list file.
 ssl_dh_params_file                     |                                         | Location of the SSL DH parameters file.
 ssl_ecdh_curve                         | prime256v1                              | Sets the curve to use for ECDH.
 ssl_key_file                           | /rdsdbdata/rds-metadata/server-key.pem  | Location of the SSL server private key file.
 ssl_library                            | OpenSSL                                 | Name of the SSL library.
 ssl_max_protocol_version               |                                         | Sets the maximum SSL/TLS protocol version to use.
 ssl_min_protocol_version               | TLSv1.2                                 | Sets the minimum SSL/TLS protocol version to use.
 ssl_passphrase_command                 |                                         | Command to obtain passphrases for SSL.
 ssl_passphrase_command_supports_reload | off                                     | Also use ssl_passphrase_command during server reload.
 ssl_prefer_server_ciphers              | on                                      | Give priority to server ciphersuite order.
(14 rows)
```

También puede recopilar toda la información sobre el uso de SSL de la instancia de base de datos de RDS for PostgreSQL por proceso, cliente y aplicación mediante la siguiente consulta:

```
SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type
   FROM pg_stat_ssl
   JOIN pg_stat_activity
   ON pg_stat_ssl.pid = pg_stat_activity.pid
   ORDER BY ssl;
 Database name | User name | ssl |  client_addr   |    application_name    |         backend_type
---------------+-----------+-----+----------------+------------------------+------------------------------
               |           | f   |                |                        | autovacuum launcher
               | rdsadmin  | f   |                |                        | logical replication launcher
               |           | f   |                |                        | background writer
               |           | f   |                |                        | checkpointer
               |           | f   |                |                        | walwriter
 rdsadmin      | rdsadmin  | t   | 127.0.0.1      |                        | client backend
 rdsadmin      | rdsadmin  | t   | 127.0.0.1      | PostgreSQL JDBC Driver | client backend
 postgres      | postgres  | t   | 204.246.162.36 | psql                   | client backend
(8 rows)
```

Para identificar el cifrado utilizado para la conexión SSL, puede realizar la consulta de la siguiente manera:

```
postgres=> SELECT ssl_cipher();
ssl_cipher
--------------------
DHE-RSA-AES256-SHA
(1 row)
```

Para obtener información acerca de la opción `sslmode`, consulte [Funciones de control de conexión de la base de datos](https://www.postgresql.org/docs/11/libpq-connect.html#LIBPQ-CONNECT-SSLMODE) en la *documentación de PostgreSQL*.

## Conjuntos de cifrado SSL en RDS for PostgreSQL
<a name="PostgreSQL.Concepts.General.SSL.Ciphers"></a>

El parámetro de configuración de PostgreSQL [ssl\$1ciphers](https://www.postgresql.org/docs/current/runtime-config-connection.html#RUNTIME-CONFIG-CONNECTION-SSL) especifica las categorías de conjuntos de cifrado permitidos para las conexiones SSL a la base de datos al usar TLS 1.2 y anteriores. 

 En RDS para PostgreSQL 16 y versiones posteriores, puede modificar el parámetro `ssl_ciphers` para usar valores específicos de los conjuntos de cifrado de la lista de permitidos. Este es un parámetro dinámico que no requiere el reinicio de la instancia de base de datos. Para ver los conjuntos de cifrado de la lista de permitidos, utilice la consola de Amazon RDS o el siguiente comando de la CLI de AWS: 

```
aws rds describe-db-parameters --db-parameter-group-name <your-parameter-group> --region <region> --endpoint-url <endpoint-url> --output json | jq '.Parameters[] | select(.ParameterName == "ssl_ciphers")'
```

La siguiente tabla muestra los conjuntos de cifrado predeterminados y los conjuntos de cifrado permitidos para las versiones que admiten configuraciones personalizadas.


| Versión del motor de PostgreSQL | Valores predeterminados del conjunto ssl\$1cipher | Valores personalizados del conjunto ssl\$1cipher de la lista de permitidos | 
| --- | --- | --- | 
| 18 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 17 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 16 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 15 | HIGH:\$1aNULL:\$13DES | No se admite ssl\$1ciphers personalizado | 
| 14 | HIGH:\$1aNULL:\$13DES | No se admite ssl\$1ciphers personalizado | 
| 13 | HIGH:\$1aNULL:\$13DES | No se admite ssl\$1ciphers personalizado | 
| 12 | HIGH:\$1aNULL:\$13DES | No se admite ssl\$1ciphers personalizado | 
| 11.4 y versiones secundarias posteriores | HIGH:MEDIUM:\$13DES:\$1aNULL:\$1RC4 | No se admite ssl\$1ciphers personalizado | 
| 11.1, 11.2 | HIGH:MEDIUM:\$13DES:\$1aNULL | No se admite ssl\$1ciphers personalizado | 
| 10.9 y versiones secundarias posteriores | HIGH:MEDIUM:\$13DES:\$1aNULL:\$1RC4 | No se admite ssl\$1ciphers personalizado | 
| 10.7 y versiones menores inferiores | HIGH:MEDIUM:\$13DES:\$1aNULL | No se admite ssl\$1ciphers personalizado | 

Para configurar todas las conexiones de instancias para que usen el conjunto de cifrado `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384`, modifiq‎ue el grupo de parámetros como se muestra en el siguiente ejemplo:

```
aws rds modify-db-parameter-group --db-parameter-group-name <your-parameter-group> --parameters "ParameterName='ssl_ciphers',ParameterValue='TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',ApplyMethod=immediate"
```

Este ejemplo utiliza un cifrado ECDSA, que requiere que la instancia use una autoridad de certificación con criptografía de curva elíptica (ECC) para establecer una conexión. Para obtener información sobre las autoridades de certificación proporcionadas por Amazon RDS, consulte [Entidades de certificación](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/singWithRDS.SSL.html#UsingWithRDS.SSL.RegionCertificateAuthorities).

Puede verificar los cifrados en uso mediante los métodos descritos en [Determinación del estado de la conexión SSL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.SSL.html#PostgreSQL.Concepts.General.SSL.Status).

Los cifrados pueden tener diferentes nombres en función del contexto:
+ Los cifrados de la lista de permitidos que puede configurar en el grupo de parámetros se denominan con sus nombres de IANA.
+ Los banners de inicio de sesión `sslinfo` y `psql` hacen referencia a los cifrados mediante los nombres de OpenSSL.

De forma predeterminada, el valor de `ssl_max_protocol_version` en RDS para PostgreSQL 16 y versiones posteriores es TLS v1.3. Debe establecer el valor de este parámetro en TLS v1.2, ya que TLS v1.3 no utiliza las configuraciones de cifrado especificadas en el parámetro `ssl_ciphers`. Cuando establece el valor como TLS v1.2, las conexiones utilizan solo los cifrados que usted defina en `ssl_ciphers`.

```
aws rds modify-db-parameter-group --db-parameter-group-name <your-parameter-group> --parameters "ParameterName='ssl_max_protocol_version',ParameterValue='TLSv1.2',ApplyMethod=immediate"
```

Para garantizar que las conexiones a la base de datos utilicen SSL, establezca `rds.force_ssl parameter` en 1 en el grupo de parámetros. Para obtener más información acerca de los parámetros y grupos de parámetros, consulte [Grupos de parámetros para Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html). 

# Actualización de aplicaciones para la conexión a las instancias de base de datos de PostgreSQL con los nuevos certificados SSL/TLS
<a name="ssl-certificate-rotation-postgresql"></a>

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](UsingWithRDS.SSL-certificate-rotation.md). 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 un clúster de base de datos](UsingWithRDS.SSL.md). 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](PostgreSQL.Concepts.General.SSL.md).

**Topics**
+ [Determinación de si las aplicaciones se conectan a sus instancias de base de datos de PostfreSQL mediante SSL](#ssl-certificate-rotation-postgresql.determining-server)
+ [Determinación de si un cliente necesita una verificación de certificados para conectarse](#ssl-certificate-rotation-postgresql.determining-client)
+ [Actualización del almacén de confianza de su aplicación](#ssl-certificate-rotation-postgresql.updating-trust-store)
+ [Uso de conexiones SSL/TLS para diferentes tipos de aplicaciones](#ssl-certificate-rotation-postgresql.applications)

## Determinación de si las aplicaciones se conectan a sus instancias de base de datos de PostfreSQL mediante SSL
<a name="ssl-certificate-rotation-postgresql.determining-server"></a>

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](USER_WorkingWithParamGroups.md).

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
<a name="ssl-certificate-rotation-postgresql.determining-client"></a>

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
<a name="ssl-certificate-rotation-postgresql.updating-trust-store"></a>

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](https://www.postgresql.org/docs/current/ssl-tcp.html) 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 un clúster de base de datos](UsingWithRDS.SSL.md).

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](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script).

**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
<a name="ssl-certificate-rotation-postgresql.applications"></a>

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](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS) en la documentación de PostgreSQL. Para obtener la lista completa de variables de entorno, consulte [ Variables de entorno](https://www.postgresql.org/docs/current/libpq-envars.html) 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](https://www.pgadmin.org/docs/pgadmin4/latest/server_dialog.html).
+ **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](https://jdbc.postgresql.org/documentation/use/#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](https://jdbc.postgresql.org/documentation/ssl/#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](https://pypi.org/project/psycopg2/). Para obtener un breve tutorial sobre cómo conectarse a una base de datos de PostgreSQL, consulte [Tutorial de psycopg2](https://wiki.postgresql.org/wiki/Psycopg2_Tutorial). Puede encontrar información acerca de las opciones que acepta del comando de conexión en [El contenido del módulo psycopg2](http://initd.org/psycopg/docs/module.html#module-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](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating).