Documentação do PostgreSQL 8.0.0 | ||||
---|---|---|---|---|
Anterior | Início | Capítulo 16. Ambiente do servidor em tempo de execução | Fim | Próxima |
Para aumentar a segurança criptografando as comunicações cliente/servidor, o PostgreSQL possui suporte nativo para conexões SSL. É necessário que o OpenSSL esteja instalado tanto no cliente quanto no servidor, e que o suporte no PostgreSQL tenha sido ativado em tempo de construção (consulte o Capítulo 14).
Uma vez compilado com suporte a SSL, o servidor PostgreSQL pode ser inicializado com SSL ativado, definindo no arquivo postgresql.conf o parâmetro ssl com o valor on. Quando inicializado no modo SSL, o servidor procura pelos arquivos server.key e server.crt no diretório de dados, que devem conter a chave privada do servidor e o certificado, respectivamente. Estes arquivos devem ser configurados de forma correta para que o servidor possa ser inicializado com SSL ativado. Se a chave privada estiver protegida por uma frase-senha (passphrase), o servidor solicitará esta frase-senha, não inicializando até que seja fornecida.
O servidor atende tanto as conexões comuns quanto as conexões SSL na mesma porta TCP, e negocia com o cliente conectando se vai usar ou não o SSL. Por padrão esta é uma opção do cliente; deve ser visto na Seção 19.1 como configurar o servidor para que seja requerido o uso do SSL para algumas ou para todas as conexões.
Para obter detalhes sobre como criar a chave privada do servidor e o certificado, deve ser consultada a documentação do OpenSSL. Pode ser utilizado para testes um certificado auto-assinado, mas no ambiente de produção deve ser utilizado um certificado assinado por uma autoridade certificadora (CA) (por uma CA global ou por uma local), para que o cliente possa verificar a identidade do servidor. Para criar rapidamente um certificado auto-assinado pode ser utilizado o seguinte comando do OpenSSL:
openssl req -new -text -out server.req
Devem ser fornecidas as informações solicitadas pelo openssl. Assegure-se de especificar "Common Name" como nome do hospedeiro local; a senha de confronto (challenge password) pode ser deixada em branco. O programa gera uma chave que é protegida por uma frase-senha; não é aceita uma frase-senha com menos de quatro caracteres. Para remover a frase-senha (o que deve ser feito se for desejada uma inicialização automática do servidor), devem ser executados os comandos:
openssl rsa -in privkey.pem -out server.key rm privkey.pem
Deve ser fornecida a frase-senha antiga para desbloquear a chave existente. Agora deve ser executado
openssl req -x509 -in server.req -text -key server.key -out server.crt chmod og-rwx server.key
para tornar o certificado um certificado auto-assinado, e para copiar a chave e o certificado para onde o servidor procura pelos mesmos.
Se for requerida a verificação dos certificados cliente, devem ser colocados no arquivo root.crt no diretório de dados os certificados das CA(s) que se deseja verificar. Quando presente, é requisitado do cliente um certificado cliente durante a inicialização da conexão SSL, que deve ter sido assinado por um dos certificados presentes no arquivo root.crt.
Quando o arquivo root.crt não está presente, os certificados cliente não são requeridos nem verificados. Neste modo o SSL fornece segurança para a comunicação, mas não para autenticação.
Os arquivos server.key, server.crt e root.crt são examinados apenas durante a inicialização do servidor; o servidor deve ser reinicializado para que as alterações feitas nestes arquivos tenham efeito.