在生产环境中部署 Keycloak:无法在不启用 SSL 的情况下设置 quarkus.http.redirect-insecure-requests

Deploying Keycloak in production: Cannot set quarkus.http.redirect-insecure-requests without enabling SSL

已经有几个小时了,我一直在努力让 Keycloak 在生产模式下工作。当我在生产环境中尝试 运行 Keycloak 时,出现下一个错误:

keycloak    | 2022-05-25 16:32:43,094 INFO  [org.infinispan.CLUSTER] (main) ISPN000080: Disconnecting JGroups channel `ISPN`
keycloak    | 2022-05-25 16:32:43,164 ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: Failed to start server in (production) mode
keycloak    | 2022-05-25 16:32:43,165 ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: Cannot set quarkus.http.redirect-insecure-requests without enabling SSL.
keycloak    | 2022-05-25 16:32:43,165 ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) For more details run the same command passing the '--verbose' option. Also you can use '--help' to see the details about the usage of the particular command.

我的docker-撰写文件:

  keycloak:
#    depends_on:
#      - postgres_data
    container_name: keycloak
    environment:
      DB_VENDOR: postgres
      DB_ADDR: postgres
      DB_DATABASE: ${POSTGRESQL_DB}
      DB_USER: ${POSTGRESQL_USER}
      DB_PASSWORD: ${POSTGRESQL_PASS}
      KEYCLOAK_ADMIN: ${KEYCLOAK_USER}
      KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_PASSWORD}
      VIRTUAL_PORT: "8080"
      PROXY_ADDRESS_FORWARDING: "true"
      
      
    image: quay.io/keycloak/keycloak:${KEYCLOAK_VERSION}
    volumes:
      - ./theme/:/opt/keycloak/themes/metronic-theme/
      - ./keys/:/opt/keycloak/conf/keys/
    ports:
      - "8082:8080"
    restart: unless-stopped
    command:
      - start --proxy=passthrough --hostname="myhostname" --hostname-strict-backchannel=true --https-certificate-file=/opt/keycloak/conf/keys/server.crt.pem --https-certificate-file=/opt/keycloak/conf/keys/server.key.pem

我正在尝试在版本 18.0.0 上部署它。

您添加到 docker 撰写的 command: 部分的命令存在问题:您定义了两次 https-certificate-file,关键的一次应该是 https-certificate-key-file - 请参阅新 TLS guide

处的参考

就是说,您还将“旧的”wildfly 环境变量与基于 quarkus 的发行版中的新环境变量混合在一起。参见例如database guide and the reverse proxy 新发行版中等效参数的指南。例如PROXY_ADDRESS_FORWARDING 现在是 KC_PROXY=edge/passthrough/...

一般来说,你应该看看新的指南,每个指南的底部都有相应的参数,当你打开一个密钥时,你会看到密钥的不同格式(CLI,ENV)。

旁注:您现在还可以仅使用环境变量或 CLI 配置 Keycloak,而不是同时使用两者。