0

我正在尝试使用 Spring Security 针对 Active Directory 对用户进行身份验证。到目前为止,我使用的是 LDAP 协议,但现在我想使用 LDAPS。

我关注了这篇文章http://blogs.oracle.com/gc/entry/unable_to_find_valid_certification并且它有效。我能够使用 LDAPS 成功地将用户绑定到 AD。

但过了一段时间(15 - 30 分钟),当我尝试登录时,我再次收到此异常:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:318)

然后我不再能够使用 LDAPS。我尝试过了:

  • 重启tomcat
  • 将证书直接添加到 cacerts
  • 使用 env 属性 -Djavax.net.ssl.trustStore 启动带有 trustStore 路径的 tomcat

唯一可行的方法是完全重新创建 jssecacerts。仅仅将现有的 jssecacerts 复制到 jre/lib/security 是不够的,它必须是新文件。我只是不明白...

我的环境是:java 1.6.0_26,tomcat 7.0.20,spring 3.0.5,spring security 3.1RC2

难道我做错了什么?

谢谢

4

1 回答 1

0

好的,所以我可能找到了解决方案。我不知道在一个 Active Directory URL 后面有很多物理机 :) 当我使用 InstallCert 时,它重写并生成了只有一个当前证书的新密钥库。这就是为什么它有时有效,有时无效的原因。我还发现所有证书都由一个 CA 签名。将 CA 的证书添加到 trustStore 后,它终于开始工作了。

于 2011-08-30T06:21:05.463 回答