JRE не может установить соединение LDAPS с AD после импорта сертификата RootCA в хранилище доверенных сертификатов cacerts

LDAPS работает через ldp. exe и через ряд других программ в системах Windows и Linux, которые, похоже, не требуют Root Cert. вообще. Некоторым программам, использующим JSSE, не удается подключиться после импорта корневого и промежуточного ЦС в хранилище доверенных сертификатов cacerts.

Я тестировал импорт сертификата LDAPS, находящегося в NTDS \ Personal (из AD), непосредственно в cacerts, а также в некоторых приложениях, использующих java, это заставляет работать безопасный LDAP.

В программах, которые используют java и не работают, при импорте корневого сертификата я получаю сообщение об ошибке:

это заставляет работать безопасный LDAP.

В программах, которые используют java и не работают, при импорте корневого сертификата я получаю сообщение об ошибке:

это заставляет работать безопасный LDAP.

В программах, которые используют java и не работают, при импорте корневого сертификата я получаю сообщение об ошибке:

[Корневое исключение - javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: ошибка проверки пути PKIX: java.security.cert.CertPathValidatorException: ошибка проверки подписи]

Если я иногда импортирую сертификат LDAPS Я получаю сообщение об ошибке:

[Корневое исключение - javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: сертификаты не соответствуют ограничениям алгоритма]

(даже после комментирования java.security)

ИЛИ начинает работать в зависимости от программы, использующей JRE; однако обычным препятствием является то, что JRE повсеместно не нравится цепочка сертификатов, основанная на ошибках.

MY CDP / AIA доступны через HTTP внутри, и все сертификаты подписаны доверенным частным внутренним двухуровневым PKI Windows.

openssl s_client -connect -showcerts domain:port

Возвращает правильную цепочку сертификатов, но также и ошибку:

verify error:num=20:unable to get local issuer certificate

Что, очевидно, связано с openssl не вижу корневой сертификат, поэтому даже с добавлением -cafile я получаю ту же ошибку, которая может говорить, но отпечаток в цепочке сертификатов для корневого сертификата такой же, как и в -cafile , так что, похоже, он должен быть правильным ...

На этом этапе я начинаю думать, что 70% из всех «Как включить LDAPS с Java» неверны (все они определенно достаточно противоречат друг другу), и что правила для JAVA CAPS имеют больше смысла в том, почему я должен импортировать фактический сертификат LDAPS, а не просто доверяя корневому сертификату. https://docs.oracle.com/cd/E19509-01/820-3399/ggfrj/index.html

Изменить: см. Ответ

Так это похоже на проблему с конфигурацией моего сертификата или Похоже, происходит что-то еще, относящееся к Java?

4
задан 26 March 2018 в 19:11
1 ответ

Оказывается, я сделал все технически правильно с точки зрения настройки PKI. Ошибки возникли из-за того, что мои сертификаты были подписаны с помощью RSASSA-PSS. Java 1.8 не поддерживает PKCS # 1 v2.1.

Мне пришлось регенерировать всю цепочку сертификатов от корневого до выдающего ЦС. Это потребовало редактирования CAPolicy.inf

AlternateSignatureAlgorithm = 1 до 0

Также строка cmd certutil -setreg ca \ csp \ alternatesignaturealgorithm 0

Также необходимо указать вручную.

Похоже на проблему с сертификатом, но я никогда не думал, что проблема совместимости с подписью будет проблемой. Усвоенный урок.

Связанная проблема: Совместимость с поставщиками центров сертификации Microsoft

Источники по теме: https://pkisolutions.com/pkcs1v2-1rsassa-pss/

5
ответ дан 3 December 2019 в 03:15

Теги

Похожие вопросы