我正在尝试使用docker image(https://hub.docker.com/r/jboss/keycloak/版本4.5.0-Final)部署keycloak,并面临设置SSL的问题。
根据文件
Keycloak图像允许您指定私钥和用于提供HTTPS的证书。在这种情况下,您需要提供两个文件:
tls.crt - 证书tls.key - 私钥这些文件需要挂载在/ etc / x509 / https目录中。图像将自动将它们转换为Java密钥库并重新配置Wildfly以使用它。
我按照给定的步骤提供了卷装设置,其中包含一个包含必要文件的文件夹(tls.crt和tls.key),但我遇到了SSL握手问题,
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
错误,在尝试访问时阻止浏览器中的keycloak加载。
我使用letsencrypt生成pem文件,并使用openssl创建.crt和.key文件。还尝试使用openssl创建这些文件以缩小问题范围并且行为相同(如果这很重要,还需要一些其他信息)
默认情况下,当我只指定端口绑定-p 8443:8443而未指定cert卷mount / etc / x509 / https时,keycloak服务器会生成自签名证书,我在浏览器中查看应用程序时看不到问题
我想这可能更像是一个证书创建问题而不是特定于keycloak的任何问题,但是,不确定如何使其工作。任何帮助表示赞赏
经过一些研究后,以下方法有效(对于自签名证书,我仍然需要弄清楚如何处理letsencrypt CA for prod)
使用keytool生成自签名证书
keytool -genkey -alias localhost -keyalg RSA -keystore keycloak.jks -validity 10950
将.jks转换为.p12
keytool -importkeystore -srckeystore keycloak.jks -destkeystore keycloak.p12 -deststoretype PKCS12
从.p12密钥库生成.crt
openssl pkcs12 -in keycloak.p12 -nokeys -out tls.crt
从.p12密钥库生成.key
openssl pkcs12 -in keycloak.p12 -nocerts -nodes -out tls.key
然后使用tls.crt和tls.key进行卷装入/ etc / x509 / https
此外,在安全应用程序中,在keycloak.json文件中指定以下属性
"truststore" : "path/to/keycloak.jks",
"truststore-password" : "<jks-pwd>",