У меня есть база данных postgresql 9.3, запущенная на виртуальной машине RHEL 6.2 kvm. Это часть приложения, которое я поддерживаю для работы, и я не могу вносить никаких изменений в конфигурацию содержимого самой виртуальной машины. В производстве она будет развернута на голом железе, эта виртуальная машина предназначена только для моих собственных нужд тестирования. На моем рабочем компьютере Windows я могу успешно подключиться к базе данных на аналогичной виртуальной машине с помощью SQL Developer.
Я подтвердил, что могу успешно подключиться к базе данных с хоста виртуальной машины через psql в командной строке. Selinux был временно отключен на виртуальной машине в целях тестирования.
После установки SQL Developer, openjdk, openjfx и передачи пути к моей установке openjdk, как того требует SQL Developer, загрузки драйвера JDBC postgresql и попытки подключения к базе данных я получаю следующую ошибку:
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
Похоже, ваш клиент думает, что соединение должно быть зашифровано, но ваш сервер этого не делает. Либо включите шифрование в том, что использует SSL для postgresql, либо отключите требование шифрования в вашей среде Java.