keycloak - ошибка SSL: сертификаты не соответствуют ограничениям алгоритма - PullRequest
0 голосов
/ 11 ноября 2019

Я запускаю экземпляр Keycloak, подключенный к Amazon RDS Postgres, с помощью этой команды Docker:

docker run --rm --name keycloak \
-p 9090:8080 -e KEYCLOAK_USER=xxx \
-e KEYCLOAK_PASSWORD=xxx \
-e DB_VENDOR=postgres \
-e DB_ADDR=mydb2.xxx.rds.amazonaws.com:5432 \
-e DB_USER=xxx \
-e DB_PASSWORD=xxx \
-e DB_DATABASE=keycloak \
jboss/keycloak:latest

Но он не может подключиться к БД:

05:18:54,776 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([("deployment" => "keycloak-server.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"keycloak-server.war\".undertow-deployment" => "java.lang.RuntimeException: RESTEASY003325: Failed to construct public org.keycloak.services.resources.KeycloakApplication(javax.servlet.ServletContext,org.jboss.resteasy.core.Dispatcher)
    Caused by: java.lang.RuntimeException: RESTEASY003325: Failed to construct public org.keycloak.services.resources.KeycloakApplication(javax.servlet.ServletContext,org.jboss.resteasy.core.Dispatcher)
    Caused by: java.lang.RuntimeException: Failed to connect to database
    Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/KeycloakDS
    Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/KeycloakDS
    Caused by: javax.resource.ResourceException: IJ031084: Unable to create connection
    Caused by: org.postgresql.util.PSQLException: SSL error: Certificates do not conform to algorithm constraints
    Caused by: javax.net.ssl.SSLHandshakeException: Certificates do not conform to algorithm constraints
    Caused by: java.security.cert.CertificateException: Certificates do not conform to algorithm constraints
    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=mydb2.xxx.us-east-1.rds.amazonaws.com.  Usage was tls server"}}

Я уверен вследующее:

  • Экземпляр RDS доступен, порт открыт. Я проверил это с помощью psql.
  • Это происходит с jboss/keycloak:7.0.1 и не происходит с jboss/keycloak:7.0.0. Версия 7.0.0 отлично работает.

Почему это может случиться и как это исправить?

Это, вероятно, слишком широкий вопрос, но я не Java-парень (я в основномделать Python), так что это так узко, как я могу.

1 Ответ

0 голосов
/ 14 ноября 2019

Похоже, проблема с безопасностью Java. Используются разные версии Java (1.8 против 11), поэтому могут потребоваться некоторые настройки в java.security или конфигурации шифра на стороне RDS (если это возможно):

Вы можете сравнить и настроить 7.0.1 java.security файл:

$ docker run --rm -ti --entrypoint bash jboss/keycloak:7.0.1 \
  -c 'cat /etc/java/java-11-openjdk/java-11-openjdk-*/conf/security/java.security | grep -v ^# | grep -v ^$'

$ docker run --rm -ti --entrypoint bash jboss/keycloak:7.0.0 \
  -c 'cat /usr/lib/jvm/java-1.8.0-openjdk-*/jre/lib/security/java.security | grep -v ^# | grep -v ^$'
...