如何使用DBeaver连接Google Cloud启用SSL的托管Postgres实例?遇证书验证错误
解决DBeaver连接GCP托管Postgres(SSL启用)时的主机名验证错误
当使用DBeaver通过服务器证书、客户端证书和密钥连接Google Cloud上启用SSL的托管Postgres实例时,若遇到错误:
The hostname 33.333.333.33 could not be verified by hostnameverifier PgjdbcHostnameVerifier.
问题原因
PostgreSQL JDBC驱动的PgjdbcHostnameVerifier会严格校验证书中包含的主机名与你连接时使用的IP/域名是否一致。GCP托管Postgres的SSL证书中绑定的是实例的专属域名(如xxx.postgres.database.googleapis.com),而非直接的IP地址,因此用IP连接时会触发主机名不匹配的验证错误。
解决方案
优先方案:改用实例域名连接
登录GCP控制台,找到目标Postgres实例的详情页面,在「连接」标签下获取实例的公共域名(而非IP)。将DBeaver连接配置中的「主机」字段替换为该域名,证书主机名与连接地址匹配后,验证即可通过。临时方案:禁用主机名验证(仅测试环境使用)
若必须使用IP连接,可通过修改JDBC参数绕过主机名验证:- 打开DBeaver的连接编辑窗口,切换到「驱动属性」标签
- 找到
sslhostnameverifier参数,设置其值为org.postgresql.ssl.NonValidatingFactory
或者: - 在连接设置的「高级」标签中,添加自定义参数
sslmode,将值设为verify-ca(此模式仅验证CA证书有效性,不校验主机名)
内容的提问来源于stack exchange,提问作者Despicable me
相关产品推荐
相关产品推荐

