O LDAPS está funcionando através do ldp.exe e de vários outros programas em sistemas Windows e Linux que não parecem requerer o Certificado Raiz. em absoluto. Alguns programas que usam JSSE não conseguem se conectar após a importação da CA raiz e intermediária para o truststore cacerts.
Testei a importação do certificado LDAPS presente em NTDS \ Personal (do AD) diretamente para cacerts e, em determinados aplicativos que usam java, isso faz com que o LDAP seguro funcione.
Em programas que usam java e falham, quando o certificado raiz é importado, recebo o erro:
[Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: signature check failed]
Se eu importar o certificado LDAPS às vezes, recebo o erro:
[Root exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Certificates does not conform to algorithm constraints]
(mesmo depois de comentar java.security)
OU ele começa a funcionar dependendo do programa que usa o JRE; no entanto, o obstáculo comum é que o JRE não parece gostar da cadeia de certificados com base nos erros.
O meu CDP / AIA está disponível internamente por HTTP e todos os certificados são assinados por uma PKI do Windows interna privada de 2 camadas.
openssl s_client -connect -showcerts domain:port
Retorna a cadeia de certificados correta, mas também o erro:
verify error:num=20:unable to get local issuer certificate
O que está evidentemente relacionado a openssl não vendo o certificado raiz, então mesmo com -cafile
addendum eu recebo o mesmo erro, o que pode estar dizendo, mas a impressão digital na cadeia de certificados para a raiz Cert é a mesma que a -cafile
, então parece que deveria estar certo ...
Neste ponto, estou começando a pensar que 70% de todos os "Como ativar o LDAPS com o Java" estão errados (todos eles certamente se contradizem o suficiente) e que as regras do JAVA CAPS fazem mais sentido para Por que estou sendo obrigado a importar o certificado LDAPS real em vez de confiar apenas no Cert Root. link
Editar: veja a resposta
Então soa como um problema de configuração com meu certificado ou parece que algo específico de Java está acontecendo?