【发布时间】:2020-08-13 03:27:34
【问题描述】:
我们正在通过 jdbc 和 psql (libpq) 连接到 postgres 服务器。我已将 ssl 设置为在 postgres 服务器上。它可以采用 ssl 和非 ssl 连接。 我通过 psql 客户端与 postgres 服务器建立了连接,并且可以确认默认的 sslmode(在建立连接时未提供 sslmode 参数时)是“首选”。请注意,我没有在 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
。 这意味着prefer 是psql 的默认sslmode。 我在 AWS 文档中阅读了 jdbc 连接到服务器的默认模式是“verify-full”。我通过不向连接字符串提供 sslmode 来创建到 postgres 服务器的 jdbc 连接。传递“verify-ca”和“verify-full”无法连接到 postgres 服务器,没有发现证书异常。连接成功。我只是想确认当 ssl 打开服务器时 jdbc 连接到 postgres 服务器的默认 sslmode 是什么。我认为它应该要求或低于。
【问题讨论】:
-
为什么 AWS 会记录 JDBC,除非它是 AWS 特定的实现?你能提供一个链接吗?
-
我正在考虑将 SSL 添加到 AWS 中的 Aurora Postgres 服务。这是文档链接docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/…
-
请查看“通过 SSL 连接到 Aurora PostgreSQL 数据库集群”部分。具体部分如下: 基于 libpq 的客户端(例如 psql)和 JDBC 使用的默认 sslmode 模式不同。基于 libpq 的客户端默认为首选,而 JDBC 客户端默认为 verify-full。
-
AWS 文档掩盖了真实行为。仅当您指定
ssl=true时,默认的 sslmode 设置为 verify-full 才适用。如果您既没有设置ssl=true也没有设置sslmode,则JDBC 的行为就像sslmode=prefer,与libpq 一样。 -
谢谢,我意识到为 ssl 配置客户端意味着将 ssl 参数设置为 true。但是 postgresql 站点中是否有关于此的特定文档。另外,当这两个参数都没有设置时,我们如何测试以发现 sslmode 是首选
标签: postgresql ssl jdbc require