如果我的应用没有启用SSL,为什么连接到Azure中的Postgres服务器失败?

gr8qqesn  于 2023-01-05  发布在  其他
关注(0)|答案(8)|浏览(184)

当我尝试从我的应用/客户端连接到Azure中的postgres服务器时,连接失败,该应用I客户端未启用SSL。

  • 无法连接到服务器:致命错误:需要SSL连接。请指定SSL选项并重试。*

这是一个很严格的要求吗?我有办法绕过这个要求吗?

rqdpfwrv

rqdpfwrv1#

与其绕过此错误并简单地禁用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。

zwghvu4y

zwghvu4y2#

默认情况下,Azure Database for PostgreSQL在服务器和客户端应用程序之间强制SSL连接以防止MITM(中间人)攻击。这样做是为了尽可能安全地连接到服务器。
如果客户端应用程序不支持SSL连接,您可以选择禁用连接到服务器时要求SSL,但不建议这样做。有关详细信息,请检查Azure中Postgres服务器的How to Configure SSL Connectivity。您可以从门户或使用CLI禁用要求SSL连接。请注意,Azure不建议在连接到服务器时禁用要求SSL连接。

hiz5n14c

hiz5n14c3#

它帮助我:
第一个月

6ju8rftf

6ju8rftf4#

来自文档:
如果您的PostgreSQL服务器需要TLS/SSL连接(默认情况下在Azure Database for PostgreSQL服务器中打开),请设置环境变量PGSSLMODE = require,以便pg_restore工具使用TLS连接。如果没有TLS,错误可能会显示为FATAL:需要SSL连接。请指定SSL选项并重试。
例如,在Bash下,export PGSSLMODE=require,然后运行pg_restore

vyswwuz2

vyswwuz25#

在我的例子中,我得到了以下错误

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.

这是因为我输入了错误的用户名或密码。所以请检查您的密码,如果它是错误的,它可能会给予类似的错误。

hivapdat

hivapdat6#

根据https://www.npgsql.org/doc/connection-string-parameters.html,正确的参数是“SSL Mode=Require”,我没有使用“SslMode=Require”

8fq7wneg

8fq7wneg7#

我刚将依赖项从

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


build.gradle文件中的runtimeOnly 'org.postgresql:postgresql'。运行正常。

ftf50wuq

ftf50wuq8#

您可以为Postgres设置禁用Azure Cloud本身的SSL功能!

相关问题