PostgreSQL SSL root.crt não está carregando

2

Estou executando o PostgreSQL 9 no Ubuntu (a partir do repositório PPA). Estou usando o OpenSSL 0.9.8o.

Eu criei chaves e certificados usando o TinyCA2 para um servidor pg e para o cliente psql. Eu essencialmente segui as instruções .

Meu arquivo pg_hba.conf está configurado com isto:

 hostssl all             abc             ::1/128              cert        clientcert=1

Coloquei o certificado raiz gerado pelo TinyCA juntamente com o certificado do servidor e digite o diretório DATA da seguinte forma.

sudo unzip database_server.zip
sudo mv sudo mv cacert.pem root.crt
sudo mv cert.pem server.crt
sudo openssl rsa -in key.pem -out server.key
sudo chmod 0600 server.key
sudo chmod ga=r root.crt
sudo chown postgres:postgres root.crt server.key server.crt

Ainda não consigo iniciar o servidor. Isso é o que eu recebo na inicialização:

$ sudo /etc/init.d/postgresql start 9.0
* Starting PostgreSQL 9.0 database server
* The PostgreSQL server failed to start. Please check the log output:
  2011-03-17 16:39:13 IST LOG:  client certificates can only be checked if a root certificate store is available
  2011-03-17 16:39:13 IST HINT:  Make sure the root.crt file is present and readable.
  2011-03-17 16:39:13 IST CONTEXT:  line 93 of configuration file "/etc/postgresql/9.0/main/pg_hba.conf"
  2011-03-17 16:39:13 IST FATAL:  could not load pg_hba.conf

Curiosamente, o arquivo root.crt está muito presente e legível:

$ ll
<snip>
-rw-r--r-- 1 postgres postgres  143 2010-12-01 17:06 pg_ctl.conf
-rw-r----- 1 postgres postgres 4.3K 2011-03-17 16:35 pg_hba.conf
-rw-r----- 1 postgres postgres 1.7K 2011-03-17 15:58 pg_ident.conf
-rw-r--r-- 1 postgres postgres  18K 2011-02-07 18:38 postgresql.conf
-rw-r--r-- 1 postgres postgres 2.8K 2011-03-17 16:39 root.crt
-rw------- 1 postgres postgres 2.2K 2011-03-17 14:37 server.crt
-rw------- 1 postgres postgres  891 2011-03-17 16:18 server.key
-rw------- 1 postgres postgres  963 2011-03-17 14:37 server.key.encrypted

O que está acontecendo? O que devo fazer para que este certificado seja carregado?

    
por malaverdiere 17.03.2011 / 12:30

1 resposta

3

As permissões estão OK. Eu tenho trabalhado:

-rw-r--r--  1 postgres postgres  615 2011-04-25 16:23 root.crt
-rw-------  1 postgres postgres  692 2011-04-25 17:20 server.crt
-rw-------  1 postgres postgres  887 2011-04-25 17:17 server.key

Tente colocar estes arquivos no diretório de dados (/var/lib/postgresql/9.0/{clustername}), não no diretório config (/etc/postgresql/9.0/{clustername}).

Quando o cluster é criado, são automaticamente fornecidos snakeoil server.key e server.crt no diretório de dados, mas não há root.crt. Provavelmente você colocou seus certificados no diretório de configuração.

To start in SSL mode, the files server.crt and server.key must exist in the server's data directory. These files should contain the server certificate and private key, respectively. If the private key is protected with a passphrase, the server will prompt for the passphrase and will not start until it has been entered.

To require the client to supply a trusted certificate, place certificates of the certificate authorities (CA) you trust in the file root.crt in the data directory.

No Ubuntu:

cat /etc/postgresql/9.0/main/postgresql.conf | grep data_dir
data_directory = '/var/lib/postgresql/9.0/main' # use data in another directory
    
por 25.04.2011 / 17:25