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?
Оказывается, я сделал все технически правильно с точки зрения настройки 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/