Почему происходит сбой подключения к моему серверу 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файл. Он работал нормально.

Вы можете отключить функцию SSL в самом облаке Azure для установки Postgres!

Другие вопросы по тегам