KeyCloak 错误 SunCertPathBuilderException: 无法找到所请求目标的有效认证路径。

3
在Keycloak服务器控制台中,选择“用户联合” > “LDAP”。
我已经成功地测试连接到Windows Active Directory服务器 - OK。
但是在测试身份验证时仍然收到错误消息。
服务器控制台输出:ValidatorException: PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效认证路径。
我使用jdk keytool实用程序生成了keystore.jks文件,并尝试将其放入c:\Program Files\Java\jdk1.8.0_241\lib\security\cacerts\中。
但仍然出现相同的错误。
有什么建议可以解决这个错误吗?

你在生成的 keystore.jks 中也放了一些东西吗?可能是 LDAP 服务器的证书。 - undefined
把东西放进你生成的keystore.jks里面。我不明白。我只是用以下命令生成了一个keystore:>keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 365 -keysize 2048 - undefined
很可能是Keycloak(Java)不信任外部服务器(SSL证书)。尝试将外部证书导入到您的信任存储中。https://dev59.com/pmEi5IYBdhLWcg3wptp_#36427118 - undefined
我应该打开哪个 URL 来获取这个证书?是 Keycloak 服务器还是 Windows AD? - undefined
我应该打开哪个URL来获取这个证书?是Keycloak服务器吗?我已经通过将证书放入服务器的standalone/configuration文件夹中,在Keycloak服务器上启用了SSL。但是当我点击URL字段中的锁图标时,我看到“证书不受信任”,并且下载被禁用。 - undefined
这个回答解决了你的问题吗?"PKIX路径构建失败"和"无法找到请求目标的有效认证路径" - undefined
1个回答

2

我们都面临着需要再次解决配置问题的困境。每次我都觉得配置都在改变。以下是一些我想分享的经验。

默认情况下,keycloak无法使用ldaps,必须将证书颁发机构公钥添加到信任存储库中。

  1. 要获取公钥,请在Windows AD服务器的cmd shell中运行以下命令(不要使用powershell):https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/export-root-certification-authority-certificate certutil -ca.cert ca_name.cer
  2. 现在你有了DER格式的base64文本文件中的CA公钥,你需要将其加载到keycloak服务器上的keystore文件中,但它在哪里?过去使用默认位置,然后根据您的安装类型standalone.xml、standalone-ha.xml或domain.xml检查配置文件...这是一个文件,告诉你在配置文件中查找的地方:https://www.keycloak.org/docs/latest/server_admin/ 搜索“truststore”
  3. 现在,你能够找到安装类型的配置文件中已存在的keystore的位置,或者在你的配置文件中添加位置,并使用keytool实用程序将证书安装到你的truststore中,使用命令:keytool -import -file ca_name.cer -keystore path_to_keystore.jks

这在过去对我完美地起作用了,尽管我还没有将部分添加到我的配置文件中,但我还没有成功,我认为这可能是因为keycloak现在正在使用一个名为https-keystore.jks的不同jks文件,该文件在配置文件中指定。我能看到这个文件,但没有密码来查看是否在那里添加证书可以让事情正常工作。

如果我弄清楚了,我会尝试记得更新此帖子。无论如何,我正在努力切换到kubernetes风格的安装方式,该方式有一种技术可以使其正确地运行一次...但是,它并没有。我目前正在使用最新的docker镜像,但它也像其他东西一样坏了。

希望这个配置成为keycloak的一部分,而不是留给用户自己解决的问题,因为我相信这往往会推开潜在的Windows AD用户。祝大家好运。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接