当我尝试从我的应用程序/客户端连接到Azure中的postgres服务器时没有启用SSL,导致连接失败。
无法连接到服务器: 致命:需要SSL连接。请指定SSL选项并重试。
这是一个强烈的要求吗?有没有办法可以绕过这个要求?
答案 0 :(得分:8)
默认情况下,Azure Database for PostgreSQL在您的服务器和客户端应用程序之间强制实施SSL连接,以防止MITM(中间人)攻击。这样做是为了使与服务器的连接尽可能安全。
虽然不推荐,但如果客户端应用程序不支持SSL连接,则可以选择禁用SSL以连接到服务器。有关详细信息,请在Azure中查看How to Configure SSL Connectivity以获取Postgres服务器。您可以禁用从门户网站或使用CLI进行SSL连接。请注意,Azure不建议在连接到服务器时禁用要求SSL连接。
答案 1 :(得分:3)
您可能还想尝试通过拉长连接字符串来启用SSL,而不是绕过此错误并简单地禁用SSL:
"Server=SERVERNAME.postgres.database.azure.com;
Port=5432;Database=DBNAME;
User Id=DBUSER@SERVERNAME;
Password=PASSWORD;
SslMode=Require";
注意最后的SslMode=Require
后缀?这也适用于Npgsql(假设您使用C#)连接到Postgresql的Azure数据库。
答案 2 :(得分:1)
它帮助我:
psql -v sslmode=true -h myapp.postgres.database.azure.com -U my_db_admin@myapp postgres
答案 3 :(得分:0)
我刚刚从更改了依赖性
compile group: 'postgresql', name: 'postgresql', version: '8.1-407.jdbc3'
到
runtimeOnly 'org.postgresql:postgresql'
文件中的build.gradle
。
一切正常。
答案 4 :(得分:0)
来自the docs:
如果您的PostgreSQL服务器需要TLS / SSL连接(默认情况下处于启用状态) 在适用于PostgreSQL服务器的Azure数据库中)设置环境变量 PGSSLMODE = require,以便pg_restore工具与TLS连接。 如果没有TLS,则错误可能显示为FATAL:需要SSL连接。 请指定SSL选项,然后重试。
例如,在Bash下将是export PGSSLMODE=require
,然后运行pg_restore
。