我在 Centos 7 上创建了server.crt
、server.key
和root.crt
文件,并在 Windows 上运行 postgresql 服务器时将它们放在 Windows 中的C:UsersxxxxAppDataRoamingpostgresql
文件夹中。现在使用 SSL 运行我的应用程序时,我收到错误
"无法验证主机名">
请帮忙。
我正在使用 JetBrains Data Grip 访问 Heroku 上的 Postgres 数据库,并在最新的 JDBC 驱动程序版本中遇到了同样的错误。这就是我解决它的方式(使用此处提供的答案(。
在"高级"选项卡中设置以下内容:
SSL=真
SSL模式=需要
sslfactory=org.postgresql.ssl.NonValidatingFactory
(我将sslmode
值从verify-ca
更新为required
,因为它现在适用于 Heroku Postgres(
如果您不关心主机名验证,但仍想使用证书,则可以将附加参数sslmode=verify-ca
用作连接参数或 URL 的一部分,以禁用主机名验证,同时保留证书验证。
要在不使用服务器证书验证的情况下使用 PostgreSQL JDBC 驱动程序,请使用
sslfactory=org.postgresql.ssl.NonValidatingFactory
作为连接参数或 URL 的一部分,如文档中所述。
对于更高版本的 JDBC 驱动程序,您必须指定
sslmode=require
因为默认值verify-full
表示客户端要检查服务器的证书和身份。