在 Fedora 30 上使用 Oracle SQL Developer 连接 PostgreSQL 数据库时出现 SSL 证书错误

在 Fedora 30 上使用 Oracle SQL Developer 连接 PostgreSQL 数据库时出现 SSL 证书错误

我收到的错误我在 RHEL 6.2 kvm 虚拟机中运行了一个 postgresql 9.3 数据库。它是我工作支持的应用程序的一部分,我无法对 VM 本身的内容进行任何配置更改。在生产中,它将部署到裸机上,这个虚拟机仅用于我自己的测试需求。在我的 Windows 工作计算机上,我可以使用 SQL Developer 成功连接到类似虚拟机上的数据库。

我已确认我可以通过命令行上的 psql 成功从 vm 主机连接到数据库。为了测试目的,已在 vm 上暂时禁用 selinux。

安装 SQL Developer、openjdk、openjfx 并按照 SQL Developer 的要求传递我的 openjdk 安装路径、加载 postgresql JDBC 驱动程序并尝试连接到数据库后,出现此错误:

Status : Failure -SSL error: java.security.cert.CertificateException: Certificates do not conform to algorithm constraints

我有点不知道该如何解决这个问题。我不是 Java 开发人员,我也不知道该如何纠正这个问题。在谷歌上搜索了很多类似的错误后,我能想到的最佳解决方案是将以下内容添加到/opt/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf,但这并不能解决问题或更改错误:

AddVMOption -Djdk.certpath.disabledAlgorithms=MD2

怀疑这仍然是正确的方向,但我不知道应该用什么来代替 MD2,或者这是否真的是正确的解决方案。

运行openssl s_client -connect 192.168.122.63:5432返回以下内容:

    [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)
---

我该如何解决这个问题?

答案1

您添加的行通常位于 java.security 文件中。但您需要做的是从 java.security 文件中删除此行。或者,如果您有其他禁用算法,请删除 MD2 并保留其余算法。如果您有类似以下内容:

jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

做了

jdk.certpath.disabledAlgorithms=RSA keySize < 1024

您可以检查这个答案更多细节。

答案2

看起来您的客户端认为连接应该加密,但您的服务器没有这样做。请在运行 SSL for postgresql 的任何系统中启用加密,或在您的 Java 环境中禁用加密要求。

相关内容