Shantanu
Shantanu

Reputation: 2931

Why does connection to my Postgres server in Azure fail if my app does not have SSL enabled?

I get a connection failure when I try to connect to my postgres server in Azure from my app/client, which does not have SSL enabled.

Unable to connect to server: FATAL: SSL connection is required. Please specify SSL options and retry.

Is this a strong requirement? Is there a way I can circumvent this requirement?

Upvotes: 44

Views: 53795

Answers (8)

rbashish
rbashish

Reputation: 2143

In my case, I was getting the following errors

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.

And it was because of the wrong username or password I had entered. So do check your password if it is wrong it may give similar errors.

Upvotes: 4

PAA
PAA

Reputation: 11975

You can disable SSL feature the Azure Cloud itself for the Postgres setup!

enter image description here

Upvotes: 0

Cosmin Gruian
Cosmin Gruian

Reputation: 61

According to https://www.npgsql.org/doc/connection-string-parameters.html the right param is "SSL Mode=Require" I didn't work for me with "SslMode=Require"

Upvotes: 1

Madbreaks
Madbreaks

Reputation: 19539

From the docs:

If your PostgreSQL server requires TLS/SSL connections (on by default in Azure Database for PostgreSQL servers), set an environment variable PGSSLMODE=require so that the pg_restore tool connects with TLS. Without TLS, the error may read FATAL: SSL connection is required. Please specify SSL options and retry.

As an example, under Bash that would be export PGSSLMODE=require, then run pg_restore.

Upvotes: 5

surendar reddy
surendar reddy

Reputation: 1

I've just changed my dependency from

compile group: 'postgresql', name: 'postgresql', version: '8.1-407.jdbc3' 

to
runtimeOnly 'org.postgresql:postgresql' in build.gradle file. It was working fine.

Upvotes: 0

Mikhail Sidorov
Mikhail Sidorov

Reputation: 1434

It helps me:

psql -v sslmode=true -h myapp.postgres.database.azure.com -U my_db_admin@myapp postgres

Upvotes: 5

Juliën
Juliën

Reputation: 9522

Rather than bypassing this error and simply disabling SSL, you might also want to try simply enabling SSL by pimping up your connection string:

"Server=SERVERNAME.postgres.database.azure.com;
    Port=5432;Database=DBNAME;
    User Id=DBUSER@SERVERNAME;
    Password=PASSWORD;
    SslMode=Require";

Notice the SslMode=Require suffix at the end? This works with Npgsql as well (assuming you use C#) for connecting to an Azure Database for Postgresql.

Upvotes: 25

Shantanu
Shantanu

Reputation: 2931

By default, Azure Database for PostgreSQL enforces SSL connections between your server and your client applications to protect against MITM (man in the middle) attacks. This is done to make the connection to your server as secure as possible.

Although not recommended, you have the option to disable requiring SSL for connecting to your server if your client application does not support SSL connectivity. Please check How to Configure SSL Connectivity for your Postgres server in Azure for more details. You can disable requiring SSL connections from either the portal or using CLI. Note that Azure does not recommend disabling requiring SSL connections when connecting to your server.

Upvotes: 14

Related Questions