我正在尝试使用 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
难道我做错了什么?
谢谢