PostgreSQL admite la conexión SSL que permite a los usuarios conectarse de forma segura a sus bases de datos. En este artículo veremos cómo habilitar SSL en la base de datos PostgreSQL.
Cómo habilitar SSL en PostgreSQL
Estos son los pasos para habilitar la conexión SSL en PostgreSQL. En el servidor PostgreSQL, necesitamos 3 certificados en el directorio de datos para la configuración de SSL. Ellos son:
- raíz.crt (certificado raíz de confianza)
- servidor.crt (certificado de servidor)
- servidor.clave (clave privada)
Abra la terminal y ejecute el siguiente comando para ejecutar como root
$ sudo -
$ cd /var/lib/pgsql/data
Generar clave privada usando openssl. Se le pedirá una frase de contraseña.
$ openssl genrsa -des3 -out server.key 1024
Eliminar frase de contraseña
$ openssl rsa -in server.key -out server.key
Lectura adicional:Principales blogs de bases de datos a seguir
Actualice el permiso de archivo y la propiedad del archivo de clave privada.
$ chmod 400 server.key
$ chown postgres.postgres server.key
Del mismo modo, cree un certificado de servidor
$ openssl req -new -key server.key -days 3650 -out server.crt -x509
En la declaración anterior, -x509 indica un certificado autofirmado. Se le solicitarán detalles como correo electrónico, país, etc. Introdúzcalos y complete la generación del certificado.
Como estamos usando un certificado autofirmado, usaremos nuestra clave de servidor como certificado raíz.
$ cp server.crt root.crt
Actualice pg_hba.conf para agregar las siguientes líneas
# IPv4 remote connections for authenticated users hostssl all www-data 0.0.0.0/0 md5 clientcert=1 hostssl all postgres 0.0.0.0/0 md5 clientcert=1
Edite postgresql.conf para agregar la siguiente línea
ssl = on
Reinicie el servidor PostgreSQL
$ /etc/init.d/postgresql restart
Lectura adicional:Cómo aumentar las conexiones máximas en PostgreSQL
Habilitar SSL en el cliente PostgreSQL
También necesitamos 3 archivos para habilitar SSL en el cliente PostgreSQL. Los almacenaremos en ~/.postgresql/ directorio
- raíz.crt (certificado raíz de confianza)
- postgresql.crt (certificado de cliente)
- postgresql.clave (clave privada)
Crear postgresql.key en la máquina del cliente y elimine la frase de contraseña.
$openssl genrsa -des3 -out /tmp/postgresql.key 1024
$openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
Lectura adicional:Sugerencias para ajustar el rendimiento de PostgreSQL
A continuación, creamos postgresql.crt y lo firmamos con la raíz de confianza (archivo de clave privada del servidor). Tenga en cuenta , cuando se le solicite el nombre común del certificado (CN), configúrelo en el nombre de la base de datos.
$openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr
$openssl x509 -req -in server.req -out /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial
Copie los tres archivos creados en el directorio /tmp del servidor a la máquina cliente. Copie root.crt del directorio /tmp del servidor al ~/.postgresql/ del cliente directorio.
Con suerte, este artículo lo ayudará a habilitar SSL en PostgreSQL.