通过JDBC连接到Postgres服务器时,sslmode参数的默认值?

时间:2020-08-13 03:27:34

标签: postgresql ssl jdbc require

我们正在通过jdbc和psql(libpq)连接到Postgres服务器。我已经将ssl设置为postgres服务器上。它可以使用ssl以及非ssl连接。 我通过psql客户端与postgres服务器建立了连接,并可以确认默认sslmode(在建立连接时未提供sslmode参数的情况下)为“ prefer”。请注意,我没有在psql的连接字符串中提供sslmode参数。仍然保持连接

psql "postgresql://$POSTGRES_HOST:$PG_PORT/postgres" -U postgres
psql (9.6.18, server 9.6.12)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help

。 这意味着psql首选使用默认的sslmode。 我已经阅读了AWS文档中的与服务器的jdbc连接,默认模式为“验证完全”。我通过不向连接字符串提供sslmode来创建与postgres服务器的jdbc连接。传递“ verify-ca”和“ verify-full”无法连接到postgres服务器,并且没有找到证书异常。连接成功。我只想确认打开ssl时与Postgres服务器的jdbc连接的默认sslmode是什么。我认为应该要求以下。

1 个答案:

答案 0 :(得分:1)

JDBC驱动程序的默认设置是使用sslmode中的verify-full

The documentation说:

有许多用于为SSL配置客户端的连接参数。参见SSL Connection parameters

最简单的是ssl = true,将其传递给驱动程序将使驱动程序同时验证SSL证书和验证主机名(与verify-full相同)。请注意,这不同于libpq,后者默认为非验证SSL连接。