J'essaie de configurer mon serveur postgres pour qu'il puisse établir des connexions ssl. J'ai configuré correctement les fichiers postgresql.conf et pg_hba.conf. J'ai créé une clé et un certificat auto-signé (server.crt et server.key) dans le répertoire de données postgres et copié le server.crt dans le root.crt.
J'ai également configuré un certificat et une clé sur un autre hôte en utilisant le root.crt du serveur pour signer le certificat du client. Lorsque j'utilise openssl pour tester le certificat, tout va bien. Cependant, lorsque j'essaie de me connecter au serveur postgres, cela échoue :
psql -h <HOSTNAME> -U <USER> -d <DB>
psql: SSL error: certificate verify failed
Alternativement :
openssl s_client -connect <HOSTNAME>:5432 -state -msg -showcerts -debug
CONNECTED(00000003)
SSL_connect:before/connect initialization
write to 080ACFE0 [080AD570] (145 bytes => 145 (0x91))
0000 - 80 8f 01 03 01 00 66 00-00 00 20 00 00 39 00 00 ......f... ..9..
...
0080 - 04 fd be bd 49 e7 1d 99-f5 bb 7e 24 2e fe 34 e8 ....I.....~$..4.
0090 - d7 .
>>> SSL 2.0 [length 008f], CLIENT-HELLO
01 03 01 00 66 00 00 00 20 00 00 39 00 00 38 00
...
be bd 49 e7 1d 99 f5 bb 7e 24 2e fe 34 e8 d7
SSL_connect:SSLv2/v3 write client hello A
read from 080ACFE0 [080B2AD0] (7 bytes => 0 (0x0))
18357:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:226:
Enfin, si je configure openssl pour servir du côté serveur et me connecter à partir de l'hôte client, cela fonctionne bien :
openssl s_client -connect <HOSTNAME>:4433 -state -msg -showcerts -debug
Une idée de la raison pour laquelle Postgres refuse mes certificats ? Dans ma configuration actuelle, le serveur est FreeBSD 4.7 et utilise postgres 8.1, et le client est CentOS 4 et utilise postgres 9.0. Je ne suis pas sûr que cela joue un rôle ici...
0 votes
PostgreSQL version 8.1 est déjà en fin de vie. Envisagez une mise à jour vers une version plus récente, le support de SSL s'est également amélioré dans les versions ultérieures. La version 9.0 est un bon candidat, vous utilisez déjà le client psql.
0 votes
Oui, nous configurons notre ancien serveur pour qu'il soit répliqué sur le nouveau (9.0) via Slony. Nous configurons SSL pour ces connexions.