BSDes

ezine 3

Creación de un LiveCD basada en FreeBSD [I]

Sebastian Yepes F. (ESN)enlace_articulo01


Configuración de PostgreSQL para soporte de conexiones seguras SSL

Borja López Río (Wu)enlace_articulo02



2. Configuración en 3 pasos

Para poder utilizar las conexiones ssl, hemos de seguir unos sencillos pasos:

Paso 1:

Esto lo hemos hecho en el primer artículo sobre instalación y configuración de pgsql (http://alf.e-shell.org/numero1/articulo02.php).

Paso 2:

Como hemos visto en el segundo artículo sobre configuraciones avanzadas de PostgreSQL (http://alf.e-shell.org/numero2/articulo02.php), hay un parámetro de configuración que ha de ser establecido en el arranque del servidor llamado ssl, que activado permite que el daemon escuche peticiones ssl.

	  template1=# select * from pg_settings where name='ssl';
	   name | setting
	  ------+---------
	   ssl  | off
	  (1 row)
         

Tenemos que comprobar que este a on, lo que podemos conseguir editando el postgresql.conf y añadiendo la línea:

	  ssl = true
         
Paso 3:

Al igual que sucede cuando utilizamos servicios como pop3s, https o la función STARTTLS de sendmail, necesitamos un certificado ssl y su correspondiente llave. En el caso de PostgreSQL, los busca por defecto en el directorio data (el database cluster donde PostgreSQL guarda la información).

Al igual que con los demas certificados, lo ideal es generar la llave (.key) y el certificate request (.csr), que no es mas que el certificado sin firmar, y luego enviarlo a un CA o certification autority como thawte para que lo firme y nos devuelva el .crt que es el certificado en si. Para este artículo vamos a generar lo que se conoce como un self-signed certificate, que es un certificado firmado por nosotros mismos y que para un entorno de pruebas sirve perfectamente.

En la página ssl-tcp de la documentación de la rama 7.4 de PostgreSQL (la estable en el momento de escribir este documento) podemos ver como generar el certificado, que se hace en cinco sencillos pasos:

	 # openssl req -new -text -out server.req
	 # openssl rsa -in privkey.pem -out server.key
	 # rm privkey.pem
	 # openssl req -x509 -in server.req -text -key server.key -out server.crt
	 # chown pgsql server.key && chmod og-rwx server.key
        

Una vez seguidos estos pasos sólo tenemos que parar y relanzar el server (no vale un restart), y comprobamos que efectivamente tenga activado el parametro ssl:

       template1=# select * from pg_settings where name='ssl';
        name | setting
       ------+---------
        ssl  | off
       (1 row)
      

Una vez activado el parámetro de SSL, el servidor automáticamente va a requerir que las conexiones se realicen utilizando ssl para cualquier conexión a base de datos a la que le asignemos una entrada hostssl en el pg_hba.conf. Para conectar por ssl con psql (el cliente de consola de pgsql) no necesitamos nada especial, nos conectamos normalmente:

       psql -U usuario -h host nombre_db
      

y el ya se encarga de que la conexión se establezca a través de SSL.