ARTIFACTORY:如何克服“org.postgresql.util.”在连接外部PostgreSQL数据库到Artifactory时,提示The hostname xxx.xxx.xxx.xxx could not be verified by hostnameverifier " exception: The hostname xxx.xxx.xxx.xxx could not be verified by hostnameverifier " ?

Yuvarajan Johnpaul
2022-03-28 08:36

为什么会这样?

作为一种安全实践,最新版本的PostgreSQL数据库默认使用TLS加密。有时,如果通过IP地址访问数据库,无法验证Artifactory和database之间建立的安全连接,服务器将返回以下错误。YYYY-MM-DDT10:43:31.115Z [jfrt] [ERROR] [8019426551caae4f] [c.z.h.p.]HikariCP:593] [ocalhost-startStop-2] - HikariCP Main -池初始化异常。
[…]
The hostname xxx.xxx.xxx.xxx could not be verified by hostnameverifier PgjdbcHostnameVerifier

如何解决这个问题?

—获取可信Artifactory实例的数据库服务器证书(将其添加到Artifactory的JVM中)。

—将数据库的DNS配置为Artifactory中的JDBC连接字符串。url: " jdbc: postgresql: / / < DATABASE_URL > / < ARTIFACTORY_DATABASE_NAME >”

异常情况:

假设服务处于一个封闭的网络中,由于数据库没有要配置的DNS,可以通过将以下属性修改为Artifactory database连接字符串来跳过TLS验证。url: " jdbc: postgresql: / / < DATABASE_URL > / < ARTIFACTORY_DATABASE_NAME >”? ssl = true&sslfactory = org.postgresql.ssl.NonValidatingFactory&sslmode =允许
修改这些属性后,主机名验证将被禁用,数据库不会对服务器[Artifactory]验证信任。

请注意,当数据库打算使用TLS加密时,建议通过为数据库连接配置DNS以及在客户端和服务器中使用适当的证书来与服务器建立安全连接。