Запуск Keycloak с https в docker

  1. Прописать в DNS или в файл hosts на клиентских машинах IP адрес keycloak сервера с именем «keycloak.ldm.test».
  2. На сервере создать или редактировать файл «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