0

Active Directory に接続している 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");

2番目: AD証明書には中間認証局がありますか?

3 番目: AD から CA 証明書を取得するリンクを参照してください。AD から証明書 を取得する方法がいくつかの方法で示されています。

-ジム

于 2014-05-22T14:23:43.660 に答える