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

Sha*_*anu 16 postgresql azure azure-database-postgresql

当我尝试从我的应用程序/客户端连接到Azure中的postgres服务器时,我发现连接失败,该应用程序/客户端没有启用SSL.

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

这是一个强烈要求吗?有没有办法可以绕过这个要求?

Jul*_*iën 15

与其绕过此错误并简单地禁用 SSL,您可能还想尝试通过拉大连接字符串来简单地启用 SSL:

"Server=SERVERNAME.postgres.database.azure.com;
    Port=5432;Database=DBNAME;
    User Id=DBUSER@SERVERNAME;
    Password=PASSWORD;
    SslMode=Require";
Run Code Online (Sandbox Code Playgroud)

注意到最后的SslMode=Require后缀了吗?这也适用于 Npgsql(假设您使用 C#)以连接到用于 Postgresql 的 Azure 数据库。


Sha*_*anu 10

默认情况下,Azure Database for PostgreSQL强制您的服务器和客户端应用程序之间的SSL连接,以防止MITM(中间人)攻击.这样做是为了使与服务器的连接尽可能安全.

虽然不推荐,但如果客户端应用程序不支持SSL连接,则可以选择禁用SSL以连接到服务器.有关详细信息,请查看如何为 Azure中的Postgres服务器配置SSL连接.您可以禁用从门户网站或使用CLI进行SSL连接.请注意,Azure不建议在连接到服务器时禁用要求SSL连接.


Mik*_*rov 5

它帮助到我:

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


Mad*_*aks 5

来自文档

如果 PostgreSQL 服务器需要 TLS/SSL 连接(在 Azure Database for PostgreSQL 服务器中默认处于打开状态),请设置环境变量 PGSSLMODE=require 以便 pg_restore 工具与 TLS 连接。如果没有 TLS,错误可能会显示为“致命:需要 SSL 连接”。请指定 SSL 选项并重试。

举个例子,在 Bash 下,这将是export PGSSLMODE=require,然后运行pg_restore​​。