在生产环境中部署 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,而不是同时使用两者。
已经有几个小时了,我一直在努力让 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,而不是同时使用两者。