Использование psql для подключения к postgresql в режиме ssl
Я пытаюсь настроить сертификат ssl для сервера postgreSQL. Я создал файл сертификата (server.crt) и key (server.key) в каталоге данных и обновил параметр SSL до "on", чтобы включить безопасное соединение.
Я просто хочу, чтобы сервер был аутентифицирован с сертификатами сервера на стороне клиента и не требовал аутентификации клиента на стороне сервера. Я использую psql в качестве клиента для подключения и выполнения команд.
Я использую PostgreSQL 8.4 и linux. Я попытался с помощью следующей команды подключиться к серверу с включенным ssl
psql "postgresql://localhost:2345/postgres?sslmode=require"
но я получаю
psql: invalid connection option "postgresql://localhost:2345/postgres?sslmode"
Что здесь не так? Является ли способ, которым я пытаюсь подключиться к серверу с включенным режимом ssl, является правильным? Хорошо ли аутентифицировать только сервер, а не клиент?
Пожалуйста, помогите мне.
Ответы
Ответ 1
psql
ниже 9.2 не принимает этот URL-подобный синтаксис для параметров.
Использование SSL может управляться параметром sslmode=value
в командной строке или переменной PGSSLMODE, но по умолчанию это prefer
, SSL-соединения будет проверяться автоматически автоматически, не указывая ничего.
Пример с строкой conninfo (обновлен для psql 8.4)
psql "sslmode=require host=localhost dbname=test"
Подробнее читайте страницу руководства.
Ответ 2
psql --set=sslmode=require -h localhost -p 2345 -U thirunas \
-d postgres -f test_schema.ddl
Ответ 3
psql "sslmode=require host=localhost port=2345 dbname=postgres" --username=some_user
Согласно postgres psql documentation, в строке conninfo должны идти только параметры подключения (что почему в нашем примере - имя_пользователя не внутри этой строки)
Ответ 4
psql -h <host> -p <port> -U <user> -d <db>
и обновите /var/lib/pgsql/10/data/pg_hba.conf
чтобы изменить метод аутентификации на cert
. Проверьте следующую ссылку для получения дополнительной информации:
https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html
Ответ 5
Нашел следующие опции, полезные для предоставления всех файлов для самозаверяющего экземпляра postgres
psql "host={hostname} sslmode=prefer sslrootcert={ca-cert.pem} sslcert={client-cert.pem} sslkey={client-key.pem} port={port} user={user} dbname={db}"