如何在docker中的keycloak中添加SSL

问题描述 投票:1回答:3

我在向Docker上运行的Keycloak添加SSL证书时遇到问题。我从AWS EC2获得了带有Load Balancer的SSL证书,但不知道如何将它添加到docker上的Keycloak。我正在浏览谷歌,但还没有找到。

此外,当我去页面像:https://stackoverflow.com,ssl完美的工作。但是当我试图打开https://stackoverflow.com:8443(因为8443是Keycloak的端口)它不起作用。

这是Keycloak的Dockerfile代码:

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
amazon-web-services docker ssl certificate keycloak
3个回答
0
投票

README是一个好朋友 - https://hub.docker.com/r/jboss/keycloak/

Setting up TLS(SSL)

Keycloak图像允许您指定私钥和用于提供HTTPS的证书。在这种情况下,您需要提供两个文件:

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

这些文件需要挂载在/ etc / x509 / https目录中。图像将自动将它们转换为Java密钥库并重新配置Wildfly以使用它。

但这只是Keycloak TLS容器配置。您正在使用Traefik,因此您可能需要在Traefik容器中配置TLS - 这取决于您的配置。


0
投票

我低于评论代表。所以我在这里添加一个答案。我的假设是你的所有组件都是docker容器。

@Jan Garaj的答案原则上是正确的。不清楚的是,您的案例中的逻辑路由看起来像这样(服务端):

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

实际路由看起来像这样(即假设常见的桥接器网络):

service
   |---------> traefik --> network/dns --> user/browser
keyclaok
  • Keycloak正在自己与Traefik之间创建一个自签名证书 你必须在Keyclaok的volumes:文件中指定一个docker-compose.yml指令(如前所述)。
  • 如果您只想测试Keycloak是否正常工作,您可以将InsecureSkipVerify = true添加到Traefik配置文件的顶部(即traefik.toml)。
  • 一旦确定可以访问Keycloak,您应该使用AWS证书对或创建自己的自签名证书(具有个人证书颁发机构)。 这里有一个链接,可以帮助您创建自己的证书颁发机构:(基于Linux)Ubuntu: Creating a trusted CA and SAN certificate using OpenSSL – Fabian Lee : Software Architect

0
投票

只需在服务keycloak用户:root中插入docker-compose.yml即可

keycloak映像以root身份安装,但容器的执行是以jboss完成的,但目录权限不允许jboss创建jks来执行https。

如果以root身份运行容器,则可以正常工作。

另一种方法是通过修改存储证书的目录的权限来创建新映像。

© www.soinside.com 2019 - 2024. All rights reserved.