Conéctese a PostgreSQL en modo SSL

Shihab Sikder 12 octubre 2023
Conéctese a PostgreSQL en modo SSL

Postgres usa SSL para verificar la seguridad de la conexión cuando intentamos conectar una base de datos. Está deshabilitado por defecto en HTTP, pero en HTTPS necesitamos el modo SSL de la conexión para realizar cualquier operación en la base de datos de Postgres.

Puede haber múltiples parámetros de ataque si la conexión no es privada. Cualquiera puede usar fácilmente las herramientas de rastreo sobre la solicitud-respuesta de la base de datos.

¿Cuáles son los modos SSL en PostgreSQL?

Postgres proporciona diferentes tipos de modos SSL. Primero, veamos la cadena de conexión general para Postgres.

const connectionString =
    'postgres://<database_username>:<database_userpassword>@<hostaddress>:<port_no>/<database_name>'

Ahora, podemos agregar el parámetro sslmode como el siguiente.

const connectionString =
    'postgres://<database_username>:<database_userpassword>@<hostaddress>:<port_no>/<database_name>?sslmode=<ssl_mode>'

Aquí está la lista de modos SSL proporcionada por Postgres.

sslmode Protección contra escuchas Protección MITM Descripción
disable No No No le importará la seguridad. Ningún dato será encriptado.
allow Quizás No No se preocupará por la seguridad y cifrará la conexión.
prefer Quizás No No obligará a usar encriptación; si el servidor admite la sobrecarga del cifrado, lo cifrará.
require No Cifre los datos, enfrentará algunos gastos generales de cifrado y la red garantiza el servidor correcto al que el usuario desea conectarse.
verify-ca Depende de la política de CA Cifre los datos, la sobrecarga de cifrado y siempre conéctese al servidor de confianza.
verify-full Los datos se cifrarán, el usuario acepta la sobrecarga, la red y el servidor son de confianza y solo se conectan al servidor específico que se les solicitó.

También puede establecer esta bandera en la variable de entorno.

PGSSLMODE=verify-full PGSSLROOTCERT=ca.pem

Aquí, ca.pem es la clave. Debe recopilarlo de una CA; CA significa autoridad certificadora.

Para configurar completamente el servidor con el modo SSL de Postgres, puede seguir los pasos de este blog.

Aquí hay una nota de la documentación oficial de Postgres sobre el modo SSL.

Using NULL-SHA or NULL-MD5 ciphers, authentication can be done without any encryption overhead. A man-in-the-middle, on the other hand, might read and pass communications between the client and the server. In addition, as compared to the overhead of authentication, encryption has a low overhead. NULL ciphers are not recommended for these reasons.

Además, puede consultar la documentación oficial aquí. Mostraron cómo autofirmar un certificado usando el modo SSL.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website