gpt4 book ai didi

java - 具有动态信任库的 Ldap ssl

转载 作者:行者123 更新时间:2023-12-04 22:35:50 25 4
gpt4 key购买 nike

我正在尝试通过 ssl 连接到 ldap。我已经生成了一个带有证书条目的 .jks 文件。我不想将它导入到 cacerts,而是想在初始化 ldap 连接时动态访问它。

if (sslAuth) {
ldapHost = "ldaps://" + ldapHost;
} else {
ldapHost = "ldap://" + ldapHost;
}
Hashtable<Object, Object> env = new Hashtable<Object, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapHost);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "userName");
env.put(Context.SECURITY_CREDENTIALS, "password");
if (sslAuth) {
System.setProperty("javax.net.ssl.trustStore", "C:\\temp\\AD-Cert-TrustStore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
env.put(DirContext.SECURITY_PROTOCOL, "ssl");
}
LdapContext ctx = new InitialLdapContext(env, null);
return ctx;

但我得到以下异常
 javax.naming.CommunicationException: simple bind failed: ldaphost: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]

最佳答案

如果所有必需的 javax.net....-properties 拼写正确且值正确,则某些 ssl 感知对象必须过早初始化。例如,如果在您的应用程序中 SslRMIClientSocketFactory 或 SslRMIServerSocketFactory 是在设置这些属性之前创建的,那么随后尝试启动 ssl-connection(即使使用新工厂)也会表现得好像没有设置属性一样。

关于java - 具有动态信任库的 Ldap ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47068124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com