Почему происходит сбой подключения к моему серверу Postgres в Azure, если в моем приложении не включен SSL?
Я получаю сбой подключения, когда пытаюсь подключиться к своему серверу postgres в Azure из моего приложения / клиента, для которого не включен SSL.
Невозможно подключиться к серверу: FATAL: требуется SSL-соединение. Пожалуйста, укажите параметры SSL и повторите попытку.
Это сильное требование? Есть ли способ, которым я могу обойти это требование?
8 ответов
По умолчанию база данных Azure для PostgreSQL обеспечивает SSL-соединения между вашим сервером и клиентскими приложениями для защиты от атак MITM (человек посередине). Это сделано для того, чтобы сделать соединение с вашим сервером максимально безопасным.
Хотя это и не рекомендуется, у вас есть возможность отключить требование SSL для подключения к вашему серверу, если ваше клиентское приложение не поддерживает подключение SSL. Пожалуйста, ознакомьтесь с разделом Как настроить соединение SSL для вашего сервера Postgres в Azure для получения более подробной информации. Вы можете отключить требование SSL-соединений либо с портала, либо с помощью CLI. Обратите внимание, что Azure не рекомендует отключать обязательные SSL-соединения при подключении к вашему серверу.
Вместо того, чтобы обойти эту ошибку и просто отключить SSL, вы также можете попробовать просто включить SSL, увеличивая строку подключения:
"Server=SERVERNAME.postgres.database.azure.com;
Port=5432;Database=DBNAME;
User Id=DBUSER@SERVERNAME;
Password=PASSWORD;
SslMode=Require";
Обратите внимание на SslMode=Require
суффикс в конце? Это также работает с Npgsql (если вы используете C#) для подключения к базе данных Azure для Postgresql.
Из документов:
Если вашему серверу PostgreSQL требуются соединения TLS/SSL (по умолчанию включены в базе данных Azure для серверов PostgreSQL), установите переменную среды PGSSLMODE=require, чтобы инструмент pg_restore соединялся с TLS. Без TLS ошибка может выглядеть как FATAL: требуется SSL-соединение. Укажите параметры SSL и повторите попытку.
Например, в Bash это будет
export PGSSLMODE=require
, затем запустите
pg_restore
.
Помогает мне:
psql -v sslmode=true -h myapp.postgres.database.azure.com -U my_db_admin@myapp postgres
В моем случае я получал следующие ошибки
Password for user user@server-name:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
FATAL: SSL connection is required. Please specify SSL options and retry.
И это из-за того, что я ввел неправильный пароль . Поэтому обязательно проверьте свой пароль, если он неправильный, это может привести к аналогичным ошибкам.
Надеюсь, это поможет кому-то ...
Согласно https://www.npgsql.org/doc/connection-string-parameters.html , правильным параметром является «SSL Mode = Require». Я не работал у меня с «SslMode = Require».
Я только что изменил свою зависимость от
compile group: 'postgresql', name: 'postgresql', version: '8.1-407.jdbc3'
кruntimeOnly 'org.postgresql:postgresql'
в build.gradle
файл. Он работал нормально.