spring - 将 SSL 根证书加载到 TrustManager 失败
问题描述
我正在尝试在 IBM 云 VM(Ubuntu 18)上启动 Spring 应用程序。我使用的命令是 java -jar application.jar。它使用 spring 数据和 SSL 证书连接到 IBM PostGres 服务。它在我的本地机器上运行良好,但是当我尝试在 vm 上运行它时,它会给出以下错误:
org.postgresql.util.PSQLException: Loading the SSL root certificate /home/*******/.postgresql/root.crt into a TrustManager failed.
at org.postgresql.ssl.jdbc4.LibPQFactory.<init>(LibPQFactory.java:151) ~[postgresql-42.2.2.jar!/:42.2.2]
at org.postgresql.ssl.MakeSSL.convert(MakeSSL.java:42) ~[postgresql-42.2.2.jar!/:42.2.2]
at org.postgresql.core.v3.ConnectionFactoryImpl.enableSSL(ConnectionFactoryImpl.java:389) ~[postgresql-42.2.2.jar!/:42.2.2]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:160) ~[postgresql-42.2.2.jar!/:42.2.2]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) [postgresql-42.2.2.jar!/:42.2.2]
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) [postgresql-42.2.2.jar!/:42.2.2]
at org.postgresql.Driver.makeConnection(Driver.java:452) [postgresql-42.2.2.jar!/:42.2.2]
at org.postgresql.Driver.connect(Driver.java:254) [postgresql-42.2.2.jar!/:42.2.2]
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) [HikariCP-3.2.0.jar!/:na]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) [HikariCP-3.2.0.jar!/:na]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) [HikariCP-3.2.0.jar!/:na]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) [HikariCP-3.2.0.jar!/:na]
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) [HikariCP-3.2.0.jar!/:na]
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) [HikariCP-3.2.0.jar!/:na]
我正在摸不着头脑,因为我在本地和 VM 上使用完全相同的 SSL 证书和 jar,但它不起作用。任何帮助,将不胜感激。谢谢。
解决方案
通过将 root.cert 放入
/root/.postgresql/root.crt
并运行带有sudo
.
推荐阅读
- c# - 如何从 C# 程序获取 WSL2 IP 地址?
- java - Scanner.findAll() 和 Matcher.results() 对于相同的输入文本和模式的工作方式不同
- reactjs - 如何在 recharts 中使用 .map 函数创建双轴 LineChart
- azure-devops - 如何使我的 Powershell 市场任务可以访问 Secret 变量(在 Azure 发布管道中定义)?
- terraform - 了解 Terraform 的网络流是如何进行的
- python - 将导入路径转换为文件路径('conf.settings' -> conf/settings.py)
- cypress - 如何在 cypress 中获取 select<> & option<> 标签的值
- python - 使用自定义异常或使用 ValueError 哪个更好
- python - TensorFlow 输出密集层节点如何映射到标签?
- c - 睡眠功能未按预期运行