Сертификат для LDAPS в Keycloak
мая 15, 2021· #keycloak #docker #аутентификацияВ нескольких рабочих проектах я использую в качестве сервиса аутентификации Keycloak. Проект спонсируется компанией RedHat, активно развивается и адаптирован для cloud-native окружения. Хотя документация у Keycloak достаточная для основных пользовательских сценариев, иногда ее не хватает для решения специфичных вопросов. Последнее с чем я столкнулся — подключение Active Directory как User Federation через протокол LDAPS (LDAP over SSL).
Как и полагается внутренним корпоративным сервисам, наш сервер LDAPS предоставляет самоподписанный сертификат.
Keycloak в этом случае для успешного соединения с ldaps://ldap.orgname.com:636
требует, чтобы
сертификат находился в truststore. Вариантов конфигурирования несколько:
- глобальный cacerts ОС, в которой запускается сервис
- cacerts из каталога установленного JDK
- системное свойство
javax.net.ssl.trustStore
для JVM - truststore в каталоге Keycloak
Если вам необходимо просто добавить самоподписанный сертификат или root.crt, то самым простым способом будет добавление его в источники на уровне ОС и обновление списка доверенных сертификатов. Тогда вам не придется каждый раз искать где находиться JDK в системе, переписывать startup-скрипты сервиса или заботиться о безопасной работе с паролями для своего truststore.
Для разворачивания в Kubernetes или OpenShift можно собрать образ следующим способом:
FROM jboss/keycloak:13.0.0
USER root
ARG CERT="root.crt"
COPY $CERT /etc/pki/ca-trust/source/anchors/
RUN update-ca-trust
USER 1000
Убедиться, что сертификат был добавлен в список доверенных:
cd /etc/pki/ca-trust/extracted/java
keytool -list -keystore cacerts
>> Your keystore contains 137 entries
В оригинальном образе их 136.