我正在管理一个 keycloak 服务器,它作为 jboss/keycloak 图像在 Synology nas 上运行。 keycloak 服务器配置为使用自签名 ssl 证书(使用我们的根证书签名)。
现在,我创建了一个新的根证书并签署了新的服务器证书(使用 openssl)。我将服务器证书和 key 文件重命名为 tls.crt 和 tls.key 并将这些文件上传到 nas 上的文件夹(ssl-Folder)。 ssl 文件夹通过 docker-compose.yml 文件安装在 jboss/keycloak docker 镜像中:
卷:
-ssl-Folder:/etc/x509/https
我通过终端命令重新启动了 jboss/keycloak docker-container
须藤 docker 重新启动
此外,我重新启动了托管容器的 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 keystore 并重新配置 Wildfly 以使用它”
但是,如果我在浏览器窗口中打开 keycloak-server 的地址,则会显示连接是使用旧的 ssl 证书保护的。在我看来, keystore 不会自动更新。
我进一步连接到 keycloak 管理控制台并删除了用户/领域/ key 缓存(主 -> 领域设置 -> 缓存)。服务器仍然没有使用新证书。
我必须做什么才能使服务器使用新的 ssl 证书?
先感谢您!
最佳答案
我一直在遇到同样的问题.. 虽然我没有使用 docker compose,但我正在生成一个 keycloak 容器并将 tls.crt 和 tls.key 文件作为卷提供。在 keycloak 容器中仔细检查这两个文件确实是文件而不是 目录 .我的问题是我没有提供文件的绝对路径;我提供了相对路径,这导致它们成为容器中的目录。进行此更改后,我看到在/opt/jboss/keycloak/standalone/configuration/keystores 中创建了 https-keystore.jks 和 https-keystore.pk12 keystore 。
关于docker - JBoss/Keycloak 服务器 : Update self-signed Server SSl certificate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63637320/