PostgreSQL SSL не работает в cmd и java - PullRequest
0 голосов
/ 04 февраля 2020

Пожалуйста, помогите со следующей проблемой ...

ОС - Windows. Я хочу настроить SSL на Postgresql 12. Затем мое приложение Java добавит записи в базу данных, удалит и т. Д. c.

Я создал сертификаты: CA, сервер, клиент. CA и сервер находятся в каталоге C: \ Program Files \ PostgreSQL \ 12 \ data. Клиент находится в C: \ Users \ User \ AppData \ postgresql. Затем я добавил сертификат CA в доверенный Windows.

Конфиги:

pg_hba:

hostnossl     all          all            0.0.0.0/0                reject
hostssl       all          all           0.0.0.0/0            cert clientcert=1

postgresql .conf:

ssl = on
ssl_ca_file = 'root.crt'

Я могу подключиться к серверу сгенерируйте pgAdmin с моими сертификатами, но есть некоторые ошибки в cmd (и java). То, что я пытался сделать в cmd

 psql.exe -U postgres -h 127.0.0.1

Результат: SSL: проверка сертификата не удалась FATAL : pg_hba.conf отклоняет соединение для хоста "127.0.0.1", пользователя "postgres", базы данных "prod", SSL выключен

Журналы: предупреждение tlsv1 неизвестно ca ФАТАЛЬНО: pg_hba. conf отклоняет соединение для хоста "127.0.0.1", пользователя "postgres", базы данных "prod", SSL off

Скажите, пожалуйста, что может быть не так и как я могу это исправить ...

Также я не нашел информации, как перенести мои сертификаты в базу данных из приложения Java. Может быть, кто-нибудь может помочь мне с этой проблемой))

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Затем я добавил сертификат CA в доверенный в Windows.

psql не интегрируется с Windows диспетчером сертификатов. CA, который будет использоваться клиентом, должен go в %APPDATA%\postgresql\root.crt, или если в другом месте его местоположение должно быть задано параметром соединения (sslrootcert) или переменной среды (PGSSLROOTCERT). Это должны быть файлы, я не думаю, что есть способ сказать "go получить его от диспетчера сертификатов".

Я думаю, что jdb c - это то же самое, он не интегрируется с Windows Диспетчер сертификатов, также для определения местоположения см. https://jdbc.postgresql.org/documentation/head/ssl-client.html

SSL: сбой проверки сертификата FATAL: pg_hba.conf отклоняет соединение для хоста "127.0.0.1 ", пользователь" postgres ", база данных" prod ", SSL выключен

Возможно, вы уже знаете это, но сначала он попытался использовать SSL и не смог проверить сертификат (он не дает понять, с какой стороны произошел сбой (сертификат клиента или сертификат сервера), затем он попытался отказаться от SSL и был отклонен pg_hba. Если бы вы установили для sslmode клиента значение «require» или выше, он не попытался бы вернуться к отсутствию SSL, он остановился бы при первой ошибке.

0 голосов
/ 04 февраля 2020

используйте это в строке подключения, и это будет работать:

ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
...