【问题标题】:Failing auth. via LDAPS认证失败。通过 LDAPS
【发布时间】:2021-06-21 09:06:14
【问题描述】:

我通过 JAAS 模块使用 LDAP/AD 身份验证设置 Rundeck(参见官方文档)。

授权。与非加密连接(providerUrl="ldap://AD-FQDN")完美配合。

当我尝试从 LDAP 切换到 LDAPS (providerUrl="ldaps://AD-FQDN") 时,问题就出现了。

我收集了 AD 证书以及 Sub 和 Root CA,将它们添加到 rundeck 信任库(然后是密钥库)并重新启动 rundeckd。

正在成功验证证书:

[root@rundeck01 ssl]# openssl verify -CAfile RootCA.cer -untrusted SubCA.cer ad01.cer
ad01.cer: OK

我在 service.log 中看到的内容:

Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

防火墙端口已打开(可以通过 telnet 连接到第 389,636 页)。

运行时间:

rundeck-3.4.0.20210614-1
CentOS 7.9

请多多指教。

【问题讨论】:

  • 检查您使用哪个 java 来运行该软件。 Java 将其信任库与系统分开保存,每个 Java JDK 都将包含自己的。就个人而言,我会使用一个单独的精心设计的信任存储,并通过将-Djavax.net.ssl.trustStore=/path/to/my/keystore 添加到 Java 启动选项来明确使用它。
  • 谢谢拉斯皮。现在我有“java.lang.RuntimeException:意外错误:java.security.InvalidAlgorithmParameterException:trustAnchors 参数必须为非空”
  • 请检查路径。您的密钥库可能为空或进程无法访问。
  • 为了测试,我已将密钥库和信任库权限更改为 0755(以及上面的所有目录),但错误仍然相同。附言。 -Djavax.net.ssl.trustStore= 应该指向 keystore 还是 truststore?
  • 信任库是用于验证其他方的密钥库。从技术上讲,从 Java 的角度来看,它是一个 JKS 密钥库。它应该指向您包含受信任的根证书的文件。默认路径为${JRE_HOME}/lib/security/cacerts

标签: linux active-directory ldap rundeck


【解决方案1】:
  1. 提取 ldaps 服务器证书:

echo -n | openssl s_client -connect your_ldap_server:636 > cert.out

  1. 导入 Rundeck 的信任库:

keytool -importcert -trustcacerts -file cert.out -alias myldap -keystore etc/rundeck/truststore

  1. 在您的 rundeckd 文件 (-Djavax.net.ssl.trustStore) 上添加信任库路径:
RDECK_JVM_OPTS="-Drundeck.jaaslogin=true \
       -Djava.security.auth.login.config=/etc/rundeck/jaas-ldap.conf \
       -Dloginmodule.name=ldap \
       -Djavax.net.ssl.trustStore=/etc/rundeck/truststore"

Same issue 解决了here

【讨论】:

  • 但是我的 AD 证书不是自签名的。涉及 SubCA 和 RootCA。我应该将 AD 证书放在密钥库中,将 CA 放在信任库中吗?或者我应该合并所有这些(cat ad.cert subca.cer rootca.cer > ldaps.pem)并放入信任库和密钥库。
猜你喜欢
  • 2020-08-28
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
  • 2019-09-03
  • 2016-05-30
  • 2014-07-19
  • 2015-10-17
相关资源
最近更新 更多