Este documento describe como establecer conexiones ssl con postgresql, incluso conexiones desde php, es válido para Debian Sarge de los repositorios oficiales :
php4-pgsql 4.3.10-4 postgresql 7.4.7-6sarge1 postgresql-client 7.4.7-6sarge1 libapache-mod-php4 4.3.10-16 libssl0.9.7 0.9.7e-3 openssl 0.9.7e-3
Generación del certificado
Conexión TCP/IP sobre SSL para postgresql tomado de /usr/share/doc/postgresql/html/ssl-tcp.html Se requiere server.key y server.crt en /var/lib/postgres/data, para generarlos, haga línea por línea los procesos, porque en ciertos momentos se pedirá la passphrase :
mkdirhier /tmp/postgresql/ca cd /tmp/postgresql/ca openssl req -new -text -out server.req #Responder a las preguntas, colocando una passphrase mayor a cuatro caracteres. #El password puede omitirse openssl rsa -in privkey.pem -out server.key rm privkey.pem #Esto anterior para evitar que se pregunte la passphrase al reiniciar postgresql openssl req -x509 -in server.req -text -key server.key -out server.crt #Esto hace que sea un certificado autofirmado. cp server.key server.crt /var/lib/postgres/data cd /var/lib/postgres/data ln -s server.crt root.crt chmod og-rwx server.key server.crt root.crt chown postgres: server.key server.crt root.crt #Para que postgresql no se queje por los permisos de los certificados y arranque correctamente rm -rf /tmp/postgresql/ca
Configuración de postgresql
Una vez que están generados los certificados, es necesario modificar la variable de soporte para ssl en /etc/postgresql/postgresql.conf , para que tenga valor true
/usr/share/doc/postgresql/html/runtime-config.html ssl=true
Modificar las bases de datos que requieran soporte ssl desde otros sitios, por ejemplo, para localhost todos los usuarios estarían autenticados con md5, es importante especificar hostssl, en realidad esto es más útil cuando se especifica por otras ips /usr/share/doc/postgresql/html/client-authentication.html, el archivo de autenticación de bases de datos /etc/postgresql/pg_hba.conf:
- hostssl all all 127.0.0.1 255.255.255.255 md5
Se detiene postgresql y se vuelve a iniciar
- /etc/init.d/postgres restart
Pruebas
Cuando se intente una conexión a una base de datos desde un cliente especificado a través de psql se debería obtener un mensaje como :
- conexión SSL (cifrado: DHE-RSA-AES256-SHA, bits: 256)

