我有一个简单的springboot jar应用程序,它正在尝试从EC2实例连接到RDS数据库。尝试通过
启动jar时 SPRING_DATASOURCE_URL=jdbc:postgresql://name-of-rds-server.us-west-2.rds.amazonaws.com:5432/tms java -jar jarname.jar
在EC2实例上,失败并显示
Caused by: java.security.cert.CertPathValidatorException: Algorithm constraints check failed on keysize limits. RSA 1024bit key used with certificate: C=US, ST=Washington, L=Seattle, O=Amazon.com, OU=RDS, CN=name-of-rds-server.us-west-2.rds.amazonaws.com. Usage was tls server
at java.base/sun.security.util.DisabledAlgorithmConstraints$KeySizeConstraint.permits(DisabledAlgorithmConstraints.java:815)
at java.base/sun.security.util.DisabledAlgorithmConstraints$Constraints.permits(DisabledAlgorithmConstraints.java:419)
at java.base/sun.security.util.DisabledAlgorithmConstraints.permits(DisabledAlgorithmConstraints.java:167)
at java.base/sun.security.provider.certpath.AlgorithmChecker.check(AlgorithmChecker.java:332)
at java.base/sun.security.ssl.AbstractTrustManagerWrapper.checkAlgorithmConstraints(SSLContextImpl.java:1637)
因此,这使我无法修改java.security
。我尝试使用伪指令jdk.certpath.disabledAlgorithms
和jdk.tls.disabledAlgorithms
修改该文件,以减少对密钥大小的限制,但是当我使它们生效时,这些更改似乎正在生效。我也尝试过将指令完全注释掉。我已经确认java.security
在正在执行的Java命令的conf目录中。如果我从conf目录中删除/ mv java.security
,应用程序将正常启动。
此外,我还可以通过intellij在本地使用相同的JBDC url连接到rds数据库,这似乎与EC2上的java配置有关。我已经尝试过openJDK vs oracle以及版本8和11。我也曾尝试在RDS实例上禁用ssl,但是此验证异常仍然发生。
CertPathValidatorException
进行了很多搜索,都遇到了类似的问题,但是却没有类似的问题。也许这很简单,但我无法弄清楚。
最终,我想在连接到postgres rds实例的EC2实例上运行这个简单的jar。
非常感谢您!