Как выбрать определенный сертификат при использовании 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 из нескольких способов.

-Джим

Другие вопросы по тегам