我正在尝试将在 Mac、OS/X 10.10 (Yosemite) 上的 Tomcat 7.0.34 中运行的 webapp 连接到安全的 AD 服务器。我收到此错误:
org.springframework.ldap.CommunicationException: qlty-test-ad:636; nested exception is javax.naming.CommunicationException: qlty-test-ad:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]
at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:100)
at org.springframework.ldap.core.support.AbstractContextSource.createContext(AbstractContextSource.java:266)
at org.springframework.ldap.core.support.AbstractContextSource.getContext(AbstractContextSource.java:106)
at org.springframework.ldap.core.support.AbstractContextSource.getReadOnlyContext(AbstractContextSource.java:125)
at org.springframework.ldap.core.LdapTemplate.executeReadOnly(LdapTemplate.java:792)
at org.springframework.ldap.core.LdapTemplate.lookup(LdapTemplate.java:822)
at org.springframework.ldap.core.LdapTemplate.lookupContext(LdapTemplate.java:1315)
at com.enonic.cms.ee.ldap.LdapConnector.lookup(LdapConnector.java:261)
at com.enonic.cms.ee.ldap.LdapRemoteUserStorePlugin.verifyConnection(LdapRemoteUserStorePlugin.java:489)
... 87 more
所以,我缺少服务器证书。我用InstallCert下载了它并得到了jssecacerts文件,据我所知,我只需要将它放在我的JVM可以找到并使用它的文件夹中。首先我尝试了,直接在jdk中:
/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/lib/
描述表明“lib”中应该有一个“security”文件夹,但没有。我尝试创建一个,然后将 jssecacerts 文件放在这里,但没有帮助。
然后,我找到了对这个文件夹的引用:
/System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/
它已经包含“cacerts”文件,所以我认为我正在做某事,但将“jssecacerts”放在这里也无济于事。还有
/Library/Java/Home/lib/security
其中包含两个文件的符号链接(“cacerts”和“jssecacerts”)。
有人知道我应该放在jssecacerts
哪里吗?