我想使用存储在我的应用程序jar中的https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem,即使用类路径。所以我尝试使用下面的jdbc url
jdbc:postgresql://<db-endpoint>:5432/pgdb?ssl=true&sslmode=verify-full&sslfactory=org.postgresql.ssl.SingleCertValidatingFactory&sslfactoryarg=classpath:global-bundle.pem
然而,我得到一个异常
PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: cannot to find valid certification path to requested target
代替classpath:
,我也尝试了file:
,但同样的例外。
在不使用SingleCertValidatingFactory的情况下,.pem文件与下面的文件系统路径一起工作
jdbc:postgresql://<db-endpoint>:5432/pgdb?ssl=true&sslmode=verify-full&sslrootcert=/app/certs/global-bundle.pem
SingleCertValidatingFactory不工作与。pem文件?我要怎么做才能让它成功呢?如有任何帮助,不胜感激。
SingleCertValidatingFactory似乎与us-east-1-bundle.pem一起工作。它似乎与将所有区域证书组合在一起的global-bundle-pem有问题。另一种解决方案是按照此文档将每个证书导入JDK cacerts
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html UsingWithRDS.SSL-certificate-rotation-sample-script
然后使用
jdbc:postgresql://<db-endpoint>:5432/pgdb?ssl=true&sslmode=verify-full&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory