0

我有一个 web 服务(用 java 编写),它连接到我们的活动目录,我正在尝试让它使用 SSL 协议进行此连接,所以我已经从 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 中指定要使用的证书? 通过名称或别名或其他什么?

感谢您的时间和帮助

4

1 回答 1

0

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

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

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

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

-吉姆

于 2014-05-22T14:23:43.660 回答