Как выбрать определенный сертификат при использовании SSL для подключения к каталогу ldap/Actyve?
У меня есть веб-сервис (написанный на 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, какой сертификат использовать? по имени или псевдониму или что-то еще?
Спасибо за ваше время и помощь
1 ответ
Во-первых: Вы уверены, что добавили правильный сертификат в свое хранилище доверенных сертификатов И используете правильное хранилище доверенных сертификатов? Вы можете указать склад доверенных сертификатов:
System.setProperty("javax.net.ssl.trustStore","clientTrustStore.key");
Во-вторых: есть ли у вас сертификат AD для промежуточных центров сертификации?
Третье: смотрите ссылку Получить сертификат CA от AD. Они показывают, как получить сертификат AD из нескольких способов.
-Джим