3 votes

PostgreSQL root.crt ne se charge pas

J'utilise postgresql 9.1 sur ubuntu 12.04.

Je voulais changer le répertoire de données de postgres. J'ai donc créé un nouveau répertoire et lancé initdb. J'ai aussi fait des liens symboliques du certificat vers le répertoire de données.

Mais postgres ne trouve toujours pas de root.crt :

sudo /etc/init.d/postgresql start
 * Starting PostgreSQL 9.1 database server                                                   * The PostgreSQL server failed to start. Please check the log output:
2012-08-17 16:02:33 CEST FATAL:  could not load root certificate file "root.crt": no SSL error reported

Qu'est-ce que je fais de mal ? La direction des données ressemble à ceci :

ls -la
total 92
drwx------ 13 postgres postgres  4096 Aug 16 14:36 .
drwxr-xr-x  3 root     root      4096 Aug 16 13:57 ..
drwx------  5 postgres postgres  4096 Aug 16 14:00 base
drwx------  2 postgres postgres  4096 Aug 16 14:36 global
drwx------  2 postgres postgres  4096 Aug 16 14:00 pg_clog
-rw-------  1 postgres postgres  4476 Aug 16 14:00 pg_hba.conf
-rw-------  1 postgres postgres  1636 Aug 16 14:00 pg_ident.conf
drwx------  4 postgres postgres  4096 Aug 16 14:00 pg_multixact
drwx------  2 postgres postgres  4096 Aug 16 14:35 pg_notify
drwx------  2 postgres postgres  4096 Aug 16 14:00 pg_serial
drwx------  2 postgres postgres  4096 Aug 16 14:36 pg_stat_tmp
drwx------  2 postgres postgres  4096 Aug 16 14:00 pg_subtrans
drwx------  2 postgres postgres  4096 Aug 16 14:00 pg_tblspc
drwx------  2 postgres postgres  4096 Aug 16 14:00 pg_twophase
-rw-------  1 postgres postgres     4 Aug 16 14:00 PG_VERSION
drwx------  3 postgres postgres  4096 Aug 16 14:00 pg_xlog
-rw-------  1 postgres postgres 19169 Aug 16 14:00 postgresql.conf
-rw-------  1 postgres postgres   126 Aug 16 14:35 postmaster.opts
lrwxrwxrwx  1 postgres postgres    31 Aug 16 14:13 root.crt -> /etc/postgresql-common/root.crt
lrwxrwxrwx  1 postgres postgres    36 Aug 16 14:13 server.crt -> /etc/ssl/certs/ssl-cert-snakeoil.pem
lrwxrwxrwx  1 postgres postgres    38 Aug 16 14:13 server.key -> /etc/ssl/private/ssl-cert-snakeoil.key

donc root.crt devrait être là et visible.

Des suggestions ?

4voto

xpepermint Points 5543

Merci Chida pour votre conseil !

Le résultat était :

 sudo -u postgres cat /etc/postgresql-common/root.crt

This is a dummy root certificate file for PostgreSQL. To enable client side
authentication, add some certificates to it. Client certificates must be signed
with any certificate in this file to be accepted. 

A reasonable choice is to just symlink this file to
/etc/ssl/certs/ssl-cert-snakeoil.pem; in this case, client certificates need to
be signed by the postgresql server certificate, which might be desirable in
many cases. See

  file:///usr/share/doc/postgresql-doc-8.3/html/ssl-tcp.html

for details (in package postgresql-doc-8.3).

J'ai donc fait pointer root.crt dans le répertoire de données vers /etc/ssl/certs/ssl-cert-snakeoil.pem :

 ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem root.crt

Et puis postgresql a démarré sans aucune erreur !

-2voto

Chris Olin Points 101

J'ai rencontré ce problème, j'ai joué avec le lien symbolique et les permissions du répertoire/fichier /etc/ssl/* et j'ai continué à obtenir cette erreur.

Finalement, j'ai corrigé le problème en supprimant les liens symboliques dans /var/lib/postgresql/*/main et en copiant les fichiers .pem et .key dans les répertoires respectifs de /etc/ssl, j'ai changé leurs noms en fonction du nom du lien symbolique correspondant, j'ai défini le propriétaire du groupe sur ssl-cert et j'ai pu faire redémarrer la base de données.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X