JBoss/Keycloak 服务器:更新自签名服务器 Ssl 证书

Posted

技术标签:

【中文标题】JBoss/Keycloak 服务器:更新自签名服务器 Ssl 证书【英文标题】:JBoss/Keycloak Server: Update self-signed Server SSl certificate 【发布时间】:2020-12-17 14:19:00 【问题描述】:

我正在管理一个 keycloak 服务器,该服务器在 synology nas 上作为 jboss/keycloak 映像运行。 keycloak 服务器配置为使用自签名 ssl 证书(使用我们的根证书签名)。 现在,我创建了一个新的根证书并签署了新的服务器证书(使用 openssl)。我将服务器证书和密钥文件重命名为 tls.crt 和 tls.key 并将这些文件上传到 nas 上的文件夹(ssl-Folder)。 ssl 文件夹通过 docker-compose.yml 文件安装在 jboss/keycloak docker 映像中: 卷:

-ssl-文件夹:/etc/x509/https

我通过终端命令重新启动了 jboss/keycloak docker-container 须藤码头重新启动 此外,我重新启动了托管容器的 nas。

如果我通过 portainer 登录正在运行的 jboss/keycloak docker-container,我可以看到新的 tls.crt 和 tls.key 文件在运行容器中的路径 /etc/x509/https 中可用并且它们是可读的对于用户/组/其他。根据 jboss/keycloak 用户指南https://hub.docker.com/r/jboss/keycloak/ 1(“设置 TLS (SSL)”部分):“图像会自动将它们转换为 Java 密钥库并重新配置 Wildfly 以使用它”

但是,如果我在浏览器窗口中打开 keycloak-server 的地址,则会显示连接是使用旧的 ssl 证书保护的。在我看来,密钥库不会自动更新。

我进一步连接到 keycloak 管理控制台并删除了用户/领域/密钥缓存(主 -> 领域设置 -> 缓存)。服务器仍然没有使用新证书。

我必须做什么才能让服务器使用新的 ssl 证书? 提前谢谢!

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。虽然我没有使用 docker compose,但我正在生成一个 keycloak 容器并将 tls.crt 和 tls.key 文件作为卷提供。在 keycloak 容器中仔细检查这两个文件确实是文件而不是 目录。我的问题是我没有提供文件的绝对路径;我提供了相对路径,这导致它们成为容器中的目录。进行此更改后,我看到在 /opt/jboss/keycloak/standalone/configuration/keystores 中创建了 https-keystore.jks 和 https-keystore.pk12 密钥库。

【讨论】:

【参考方案2】:

将新的 tls.crt 和 tls.key 文件放入 /etc/x509/https 目录后,您需要执行 /opt/jboss/tools/x509.sh 脚本才能将新的密钥库生成到/opt/jboss/keycloak/standalone/configuration/keystores 目录。

【讨论】:

【参考方案3】:

脚本/opt/jboss/tools/x509.sh 旨在为新创建的容器只运行一次。如果您更改/更新您的证书并重新启动容器或重新运行x509.sh 脚本,它将无法正常工作。您必须销毁容器并创建一个新容器。这样,它就可以正常工作了。

【讨论】:

以上是关于JBoss/Keycloak 服务器:更新自签名服务器 Ssl 证书的主要内容,如果未能解决你的问题,请参考以下文章

JBOSS/Keycloak 集群等待 1 分钟再投票给 coordinator

ISPN000580:无法迁移持久数据 - 升级到 jboss/keycloak 13.0.1

M1 mac 无法运行 jboss/keycloak docker 镜像

Keycloak Docker 映像基本 unix 命令不可用

Tomcat 服务器和 HTTP 客户端接受过期的自签名证书

Keycloak docker HTTPS-REQUIRED with nginx ssl