我有一个数据库服务器,可以使用psql从我的计算机登录:

root@engine:/devops# psql -h database -U postgres -d uat

给出以下结果:
psql (9.5.0, server 9.4.5)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

uat=#

但如果我尝试从我的应用程序连接:
no pg_hba.conf entry for host *** user "postgres", database "uat", SSL off

这是我的应用程序使用的myprops.properties
uatDb.user=postgres
uatDb.password=***
uatDb.driverClass=org.postgresql.Driver
uatDb.jdbcUrl=jdbc:postgresql://database:5432/uat?ssl=true
uatDb.port=5432
uatDb.name=uat
uatDb.host=database

我甚至将公共证书从数据库提供者导入到应用程序trustore中,但似乎也不起作用。
我想知道为什么我可以通过psql连接,但我的应用程序没有。
有什么帮助吗?

最佳答案

我可以确认连接是在SSL关闭的情况下进入的,这很可能是由于证书验证限制。你能试着加上:
sslfactory=org.postgresql.ssl.NonValidatingFactory
看看这能不能解决问题?

10-05 23:07