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 |
Sí | 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 |
Sí | Depende de la política de CA | Cifre los datos, la sobrecarga de cifrado y siempre conéctese al servidor de confianza. |
verify-full |
Sí | Sí | 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.