Как я могу добавить SSL в Keycloak в Docker - PullRequest
0 голосов
/ 24 декабря 2018

У меня проблема с добавлением SSL-сертификата в Keycloak, который работает в Docker.Я получил сертификат SSL от AWS EC2 с балансировщиком нагрузки, но не знаю, как добавить его в Keycloak на докере.Я просматривал Google, но пока ничего не нашел.

Также, когда я захожу на страницу вроде: https://stackoverflow.com, ssl работает отлично.Но когда я пытаюсь открыть https://stackoverflow.com:8443 (так как 8443 является портом Keycloak), он не работает.

Вот код Dockerfile Keycloak:

FROM jboss/keycloak:4.6.0.Final

WORKDIR /opt/jboss/keycloak

COPY realm-export.json /opt/jboss/keycloak/

EXPOSE 8443

ENTRYPOINT [ "/opt/jboss/tools/docker-entrypoint.sh" ]
CMD ["-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-Dkeycloak.import=realm-export.json -Dkeycloak.migration.strategy=OVERWRITE_EXISTING"]

И вотфайл docker-compose.yml:

version: '2'

services:
  keycloak:
    build: "./Keycloak + actibook-app client import"
    depends_on:
      - keycloak-postgres
    environment:
      - KEYCLOAK_USER=${KEYCLOAK_USER}
      - KEYCLOAK_PASSWORD=${KEYCLOAK_PASSWORD}
      - KEYCLOAK_IMPORT=${KEYCLOAK_IMPORT}
      - POSTGRES_USER=${KEYCLOAK_DATABASE_USER}
      - POSTGRES_PASSWORD=${KEYCLOAK_DATABASE_PASSW}
      - POSTGRES_PORT_5432_TCP_ADDR= keycloak-postgres
    ports:
      - "8443:8443"
    labels:
      - "traefik.frontend.passHostHeader=true"

  traefik:
    build: ./traefik
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

Ответы [ 3 ]

0 голосов
/ 30 апреля 2019

Я ниже комментария респ.уровень, поэтому я добавляю ответ здесь.Я предполагаю, что все ваши компоненты являются док-контейнерами.

@ Ответ Яна Гараджа в принципе верен.Что не ясно, так это то, что логическая маршрутизация в вашем случае выглядит следующим образом (сервисная сторона):

service --> Keyclaok --> traefik --> network/dns --> user/browser

Фактическая маршрутизация выглядит следующим образом (т.е. предполагается, что используется общая док-сеть для моста):

service
   |---------> traefik --> network/dns --> user/browser
keyclaok
  • Keycloak создает самоподписанный сертификат между собой и Traefik
    • . Вы должны указать директиву volumes: в файле docker-compose.yml Keyclaok (как упоминалось ранее).
  • Если вы просто хотите проверить, работает ли Keycloak, вы можете добавить InsecureSkipVerify = true в начало вашего конфигурационного файла Traefik (т.е. traefik.toml).
  • Один разВы установили, что Keycloak доступен, поэтому вы должны использовать пару сертификатов AWS или создать свой собственный самозаверяющий сертификат (с личным центром сертификации).
0 голосов
/ 11 июня 2019

Просто вставьте в docker-compose.yml в службу keycloak user: root

Образ keycloak установлен как root, но выполнение контейнера выполняется как jboss, но разрешения каталога не позволяют jbossсоздайте jks для выполнения https.

Если вы запустите контейнер от имени пользователя root, он будет работать.

Другой альтернативой является создание нового образа путем изменения разрешений каталогов, в которых вы храните сертификаты.

0 голосов
/ 25 декабря 2018

README - хороший друг - https://hub.docker.com/r/jboss/keycloak/:

Настройка TLS (SSL)

Образ Keycloak позволяет указать как закрытый ключ, так и сертификат для обслуживания HTTPS.В этом случае вам нужно предоставить два файла:

tls.crt - a certificate
tls.key - a private key

Эти файлы должны быть смонтированы в каталоге / etc / x509 / https.Изображение автоматически преобразует их в хранилище ключей Java и реконфигурирует Wildfly для его использования.

Но это только конфигурация контейнера Keycloak TLS.Вы также используете Traefik, поэтому вам может потребоваться настроить TLS в контейнере Traefik - это зависит от вашей конфигурации.

...