我正在管理作为jboss/keycloak映像在synology nas上运行的keycloak服务器。keycloak服务器配置为使用自签名ssl证书(用我们的根证书签名)。现在,我创建了新的根证书并签署了新的服务器证书我将服务器证书和密钥文件重命名为tls.crt和tls.key,并将这些文件上载到一个文件夹中ssl文件夹。ssl文件夹通过docker-compose.yml文件装载在jboss/keycloak docker映像中:卷数:
- ssl文件夹:/etc/x509/https
我通过终端命令sudo docker restart重新启动了jboss/keycloak docker-container。此外,我重新启动了承载该容器的nas。
如果我通过portainer登录正在运行的jboss/keycloak docker-container,我可以看到新的tls.crt和tls.key文件在路径/etc/x509/https下的运行容器中可用,并且它们对于user/group/other是可读的。根据jboss/keycloak用户指南https://hub.docker.com/r/jboss/keycloak/ 1(“设置TLS(SSL)”部分):“映像会自动将它们转换为Java密钥库,并重新配置Wildfly以使用它”
但是,如果我在浏览器窗口中打开keycloak-server的地址,它会显示连接是用旧的ssl证书保护的。在我看来,密钥库并没有自动更新。
我进一步连接到keycloak管理控制台并删除了用户/领域/密钥缓存(Master -〉Realm Settings -〉Cache),但服务器仍然没有使用新证书。
我需要做什么才能让服务器使用新的ssl证书?提前感谢!
3条答案
按热度按时间8wigbo561#
脚本
/opt/jboss/tools/x509.sh
被设计为只为一个新创建的容器运行一次。如果您更改/更新您的证书并重新启动容器或重新运行x509.sh
脚本,它将无法工作。您必须销毁容器并创建一个新的容器。这样,它将以ootb方式工作。yeotifhr2#
我也遇到了同样的问题。虽然我没有使用docker compose,但是我生成了一个keycloak容器,并提供了tls.crt和tls.key文件作为卷。在keycloak容器中仔细检查这两个文件是否确实是文件而不是目录。我的问题是我没有提供文件的绝对路径;我提供了相对路径,这导致它们成为容器中的目录。在我进行了此更改后,我发现https-keystore.jks和https-keystore. pk 12密钥存储库是在/opt/jboss/keycloak/standalone/configuration/keystores中创建的。
6ss1mwsb3#
将新的tls.crt和tls.key文件放入/etc/x509/https目录后,需要执行/opt/jboss/tools/x509.sh脚本,以便在/opt/jboss/keycloak/standalone/configuration/keystores目录中生成新的密钥库。