Запуск Keycloak с https в docker¶
- Прописать в DNS или в файл hosts на клиентских машинах IP адрес keycloak сервера с именем «keycloak.ldm.test».
- На сервере создать или редактировать файл «docker-compose.yaml» и привести секцию Keycloak к такому виду:
Важно убедиться, что выделенные полужирным шрифтом строки присутствуют в compose:
keycloak:
image: quay.io/keycloak/keycloak:18.0.1
extra_hosts:
- "ldmtest.local:172.19.93.58"
- "LDMTEST:172.19.93.58"
- "LDMTEST.LOCAL:172.19.93.58"
entrypoint: /bin/bash
user: "0"
command:
- -c
- |
sed -i -r 's/camellia128-cts-cmac/camellia128-cts-cmac arcfour-hmac/g' /etc/crypto-policies/back-ends/krb5.config;
for cert in /opt/keycloak/certs/*.{crt,pem}; do
[ -e "$$cert" ] || continue
alias=$$(basename "$$cert" | sed 's/.[^.]*//g')
echo $$cert
keytool -importcert -noprompt -alias "$$alias" -file "$$cert" -cacerts -storepass changeit || true
done;
/opt/keycloak/bin/kc.sh start-dev --import-realm --spi-login-protocol-openid-connect-legacy-logout-redirect-uri=true
ports:
- "8080:8080"
- "8443:8443"
- "9990:9990"
environment:
KEYCLOAK_ADMIN: keycloakadmin
KEYCLOAK_ADMIN_PASSWORD: 123456
KEYCLOAK_LOGLEVEL: WARN
KC_PROXY: edge
KC_PROXY_ADDRESS_FORWARDING: "true"
KC_HTTPS_CERTIFICATE_FILE: /opt/keycloak/certs/server.crt
KC_HTTPS_CERTIFICATE_KEY_FILE: /opt/keycloak/certs/server.key
KC_HTTPS_CLIENT_AUTH: request
KC_HTTP_ENABLED: "true"
KC_HOSTNAME_STRICT: "false"
KC_HOSTNAME_STRICT_HTTPS: "false"
volumes:
- ./keytabs:/keytabs:ro
- ./keycloak_data:/opt/keycloak/data/h2
- ./certs:/opt/keycloak/certs:ro
restart: always
3. Импортировать сертификаты в хранилище командой:
keytool -importcert -noprompt -alias "CA" -file "ca.crt" -cacerts -storepass changeit
Для compose выше это не требуется – все сертификаты с расширениями «crt» и «pem» импортируются из папки «./certs» при старте контейнера.
Скопировать ранее созданные файлы «ca.crt» и «server.crt» в папку «./certs» каталога, в котором лежит файл «docker-compose.yaml». Нужно создать эту папку при необходимости.
4. Запустить Keycloak с помощью команды:
docker compose up -d