私は、RHEL 6.2 kvm 仮想マシンで postgresql 9.3 データベースを実行しています。これは私が仕事でサポートしているアプリケーションの一部であり、VM 自体のコンテンツの構成を変更することはできません。実稼働ではベアメタルに展開されますが、この VM は私自身のテスト ニーズのためだけのものです。私の Windows 仕事用コンピューターでは、SQL Developer を使用して同様の VM 上のデータベースに正常に接続できます。
コマンドラインで psql を介して VM ホストからデータベースに正常に接続できることを確認しました。テスト目的で、selinux は VM 上で一時的に無効になっています。
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 開発者ではないので、これを修正する方法がよくわかりません。同様のエラーについて Google で何度も検索した結果、私が思いついた最善の解決策は、次のコードを に追加することでしたが/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
クライアントは接続を暗号化する必要があると考えているようですが、サーバーはそれを実行していません。 postgresql の SSL を実行しているもので暗号化を有効にするか、Java 環境で暗号化の要件を無効にしてください。