Keycloak托管在Docker容器内。目的是在keyclaok(K1)与另一个伙伴Keycloak(K2)之间进行身份联合。 K2托管在SSL连接之后。
根据文档,我配置信任库。但仍然出现以下错误,
Exception: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)
为此,我正在更新standalone.xml
[1]-https://www.keycloak.org/docs/latest/server_installation/index.html#_truststore
答案 0 :(得分:0)
从4.5.0开始,Keycloak Docker映像默认使用standalone-ha.xml而不是standalone.xml。这就是Keycloak无法识别新信任库的原因。以下是使用基于docker的部署在Keycloak中配置信任库的步骤。
第1步:
将以下步骤添加到standalone-ha.xml文件中。
<spi name="truststore">
<provider name="file" enabled="true">
<properties>
<property name="file" value="/opt/jboss/truststore.jks"/>
<property name="password" value="password"/>
<property name="hostname-verification-policy" value="WILDCARD"/>
<property name="disabled" value="false"/>
</properties>
</provider>
</spi>
第2步:
将文件复制到Docker容器
docker cp standalone-ha.xml continer_id:/opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
第3步:
将证书复制到容器内。可以从浏览器本身导出证书(公共证书)。
docker cp cert.crt 9fbd81264f65:/opt/jboss/cert.crt
第4步:
ssh放入容器
docker exec -it container_id bash
第5步:
keytool -import -alias efactory-nimble.salzburgresearch.at -keystore truststore.jks -file cert.crt
第6步:
docker restart container_id
[1]-https://lists.jboss.org/pipermail/keycloak-user/2018-October/016066.html