Назад | Перейти на главную страницу

Невозможно подключиться к Postgres с сертификатом клиента

Я установил Postgres 10.1 на сервер Windows, и он работает как служба Windows. Он установлен в %APPDATA% для пользователя локальной системы, который является учетной записью пользователя, с которой работает служба Windows:

C:\Windows\System32\config\systemprofile\AppData\Roaming\My App Database

Мои серверные SSL-сертификаты находятся в этом же каталоге, и мой postgresql.conf настроен на их поиск:

ssl_cert_file = 'db.crt'
ssl_key_file = 'db.key'
ssl_ca_file = 'ca.crt'

Мой файл pg_hba.conf, похоже, настроен правильно:

hostssl     my-database         my-username         0.0.0.0/0               cert clientcert=1 map=my-username

Я пытаюсь подключиться к psql инструмент командной строки:

psql "postgresql://my-username@localhost/my-database?sslmode=verify-full&sslkey=C:\MyDir\MyClientCert.key&sslcert=C:\MyDir\MyClientCert.crt"

но я получаю эту ошибку:

psql: root certificate file "C:\Users\Administrator\AppData\Roaming/postgresql/root.crt" does not exist Either provide the file or change sslmode to disable server certificate verification.

Я не могу найти ссылку на root.crt в моей конфигурации, и я понятия не имею, почему он смотрит в %APPDATA%\postgresql, а не настроенный каталог PGDATA, %APPDATA%\My App Database.

Подключение с помощью sslmode = verify-full подразумевает, что вы хотите, чтобы клиент проверял сертификат сервера, который требует указания «корневого сертификата» с помощью параметра подключения «sslrootcert» или переменной среды «PGSSLROOTCERT». Рискну предположить, что по умолчанию он предоставляет% APPDATA% \ postgres \ root.crt.

Сообщение об ошибке предоставляет ваше решение, но я подозреваю, что вы неправильно поняли - это ошибка клиента, а не ошибка сервера, конфигурация сервера не имеет значения.

Либо предоставьте файл, либо измените sslmode, чтобы отключить проверку сертификата сервера.

Вы можете изменить sslmode на «require» или предоставить корневой сертификат.