TrustStore并重新“无法找到所请求目标的有效证书路径”

时间:2011-08-26 13:32:01

标签: truststore

我正在尝试使用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

我做错了吗?

由于

1 个答案:

答案 0 :(得分:0)

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