У меня есть простое приложение JAR для Springboot, которое пытается подключиться к базе данных RDS из экземпляра EC2. При попытке запустить банку через
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
находится в conf dir выполняемой команды java. Если я удалю / mv java.security
из каталога, приложение запустится нормально.
Кроме того, локально через intellij я могу подключиться к базе данных rds с тем же URL-адресом JBDC, что отлично, похоже, это связано с конфигурацией java на EC2. Я пробовал openJDK vs oracle и версии 8 и 11. Я также пытался отключить ssl на экземпляре RDS, но это исключение проверки все еще происходит.
Многие поиски столкнулись с похожими проблемами с CertPathValidatorException
, но ничего подобного. Возможно, это что-то простое, но я не могу понять это.
В конце дня я хочу запустить этот простой jar на экземпляре EC2, который подключается к экземпляру postgres rds.
Большое вам спасибо!