我正在尝试使用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了。 我试着:
唯一有效的方法是完全重新创建jssecacerts。仅将现有的jssecacerts复制到jre / lib / security是不够的,它必须是新文件。我只是不明白......
我的环境是:java 1.6.0_26,tomcat 7.0.20,spring 3.0.5,spring security 3.1RC2
我做错了吗?
由于
答案 0 :(得分:0)
好的,所以我可能找到了解决方案。我不知道一个Active Directory URL背后是许多物理机器:)当我使用InstallCert时,它重写并生成只有一个当前证书的新密钥库。这就是为什么它有时有效,有时没有用的原因。我还发现所有证书都由一个CA签名。将CA的证书添加到trustStore后,它开始工作。