使用SSL进行ldap / Active目录连接时,如何选择特定证书?

时间:2014-05-22 08:43:25

标签: ldap ldapconnection

我有一个web服务(用java编写),它连接到我们的活动目录,我试图让它使用SSL protocole进行此连接,所以我从URL中下载了证书,将其导入我的信任库中,在我的代码中指定使用SSL协议安全性,如下所示: env.put(Context.SECURITY_PROTOCOL, "ssl");

env.put(Context.PROVIDER_URL, "ldap://MyHost:636");

我的问题是连接不能一直工作,我收到此错误: javax.naming.CommunicationException: simple bind failed: MyHost: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]

我的想法是这个主机上有多个证书,当我尝试连接时,它并不总是使用正确的证书(我在我的信任库中拥有的证书) 那么有没有办法在java中指定要使用哪个证书?用名字或别名或别的东西?

感谢您的时间和帮助

1 个答案:

答案 0 :(得分:0)

首先:您确定将正确的证书添加到信任库并且您使用的是正确的信任库吗? 您可以指定信任库:

System.setProperty("javax.net.ssl.trustStore","clientTrustStore.key");

第二:您的AD证书是否有任何中间证书颁发机构?

第三:查看链接Obtain the CA Certificate from AD 他们展示了如何通过几种方法获得证书形式AD。

-Jim