PostgreSQL suporta conexão SSL que permite que os usuários se conectem com segurança aos seus bancos de dados. Neste artigo veremos como habilitar o SSL no banco de dados PostgreSQL.
Como habilitar SSL no PostgreSQL
Aqui estão as etapas para habilitar a conexão SSL no PostgreSQL. No servidor PostgreSQL, precisamos de 3 certificados no diretório de dados para configuração do SSL. Eles estão:
- root.crt (certificado raiz confiável)
- servidor.crt (certificado do servidor)
- servidor.chave (chave privada)
Abra o terminal e execute o seguinte comando para executar como root
$ sudo -
$ cd /var/lib/pgsql/data
Gere a chave privada usando openssl. Você será solicitado a inserir a senha.
$ openssl genrsa -des3 -out server.key 1024
Remover senha
$ openssl rsa -in server.key -out server.key
Bônus de leitura:Principais blogs de banco de dados a seguir
Atualize a permissão do arquivo e a propriedade do arquivo de chave privada.
$ chmod 400 server.key
$ chown postgres.postgres server.key
Da mesma forma, crie um certificado de servidor
$ openssl req -new -key server.key -days 3650 -out server.crt -x509
Na instrução acima, -x509 indica um certificado autoassinado. Você será solicitado a fornecer detalhes como e-mail, país, etc. Digite-o e conclua a geração do certificado.
Como estamos usando um certificado autoassinado, usaremos nossa chave de servidor como certificado raiz.
$ cp server.crt root.crt
Atualize pg_hba.conf para adicionar as seguintes linhas
# IPv4 remote connections for authenticated users hostssl all www-data 0.0.0.0/0 md5 clientcert=1 hostssl all postgres 0.0.0.0/0 md5 clientcert=1
Edite postgresql.conf para adicionar a seguinte linha
ssl = on
Reinicie o servidor PostgreSQL
$ /etc/init.d/postgresql restart
Bônus de leitura:Como aumentar o máximo de conexões no PostgreSQL
Ativar SSL no cliente PostgreSQL
Também precisamos de 3 arquivos para habilitar o SSL no cliente PostgreSQL. Vamos armazená-los em ~/.postgresql/ diretório
- root.crt (certificado raiz confiável)
- postgresql.crt (certificado do cliente)
- postgresql.key (chave privada)
Crie postgresql.key na máquina cliente e remova a senha.
$openssl genrsa -des3 -out /tmp/postgresql.key 1024
$openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
Leitura bônus:Dicas de ajuste de desempenho do PostgreSQL
Em seguida, criamos postgresql.crt e o assinamos usando a raiz confiável (arquivo de chave privada do servidor). Observe , quando for solicitado o nome comum do certificado (CN), defina-o como nome do banco de dados.
$openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr
$openssl x509 -req -in server.req -out /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial
Copie os três arquivos criados no diretório /tmp do servidor para a máquina cliente. Copie root.crt do diretório /tmp do servidor para o ~/.postgresql/ do cliente diretório.
Espero que este artigo o ajude a habilitar o SSL no PostgreSQL.