Eu tenho um banco de dados postgresql 9.3 em execução em uma máquina virtual RHEL 6.2 kvm. Faz parte do aplicativo que suporto para o trabalho e não posso fazer nenhuma alteração na configuração do conteúdo da própria VM. Na produção, ele seria implantado em bare metal, esta VM é apenas para minhas próprias necessidades de teste. No meu computador de trabalho com Windows, posso conectar-me com êxito ao banco de dados em uma VM semelhante usando o SQL Developer.
Confirmei que consigo me conectar com êxito ao banco de dados do host VM via psql na linha de comando. selinux foi desativado temporariamente na VM para fins de teste.
Depois de instalar o SQL Developer, openjdk, openjfx e passar o caminho da minha instalação do openjdk conforme solicitado pelo SQL Developer, carregar o driver JDBC postgresql e tentar conectar-se ao banco de dados, recebo este erro:
Status : Failure -SSL error: java.security.cert.CertificateException: Certificates do not conform to algorithm constraints
Estou meio sem saber como contornar isso. Não sou desenvolvedor Java e realmente não sei como corrigir isso. Depois de pesquisar muito no Google por erros semelhantes, a melhor solução que encontrei foi adicionar o seguinte ao /opt/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf
, o que não resolveu o problema nem alterou o erro:
AddVMOption -Djdk.certpath.disabledAlgorithms=MD2
EUsuspeitoesta ainda é a direção certa, mas não sei o que deve substituir o MD2, ou se esta é realmente a solução correta.
A execução openssl s_client -connect 192.168.122.63:5432
retorna o seguinte:
[user@hostname ~]$ openssl s_client -connect 192.168.122.63:5432
CONNECTED(00000003)
write:errno=0
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 303 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
Como faço para contornar isso?
Responder1
A linha que você adiciona geralmente está localizada no arquivo java.security. Mas o que você precisa fazer é remover esta linha do arquivo java.security. Ou se você tiver algoritmos desabilitados adicionais, remova o MD2 e mantenha o resto. Se você tiver algo como:
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
Faça
jdk.certpath.disabledAlgorithms=RSA keySize < 1024
Você pode checaresta respostapara mais detalhes.
Responder2
Parece que seu cliente acha que a conexão deveria ser criptografada, mas seu servidor não está fazendo isso. Ative a criptografia em tudo o que estiver executando SSL para postgresql ou desative o requisito de criptografia em seu ambiente Java.