gpt4 book ai didi

java - 通过 Java 与 LDAP 的 SSL 连接

转载 作者:行者123 更新时间:2023-11-29 05:41:37 26 4
gpt4 key购买 nike

<分区>

更新:我从来没有在 SSL 上工作过。为了获得安全性,我最终实现了 VPN。

我已经对这个问题进行了 2 天的故障排除,但终究无法解决。我查看了以下主题:

Resolving javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed Error?

https://stackoverflow.com/questions/14465089/ssl-connection-in-glassfish-3-1

等等。

更新:抱歉,我什至没有发布我遇到的错误。在这里:

javax.naming.CommunicationException: simple bind failed: server.local: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]

我还在 Win7 专业版上使用 GlassFish server 3.1.2 和 NetBeans 7.3。

这是导致错误的代码:

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://server.local:636/");

// Specify SSL
env.put(Context.SECURITY_PROTOCOL, "ssl");

// Fill in secuirty/bind variables
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, config.Config.getSECURITY_PRINCIPAL()); //returns user@domain.local
env.put(Context.SECURITY_CREDENTIALS, config.Config.getSECURITY_CREDENTIALS()); //returns password

// Create the initial context
ctx = new InitialDirContext(env); //defined above as InitialDirContext ctx = null;

我已经使用 ldp.exe 确认我们的 AD 服务器上正确配置了 SSL。此外,我尝试了以下方法:

  1. 按概述导入客户端证书(以及来自 AD CS 的 CA 根证书)here

一个。我使用了以下命令:

C:\Program Files (x86)\Java\jdk1.7.0_25>bin\keytool -import -file SBS2011.sage.local_sage-SBS2011-CA.crt -keystore .\jre\lib\security\cacerts -alias SBS2011
Enter keystore password:
Certificate already exists in keystore under alias <mykey>
Do you still want to add it? [no]: yes
Certificate was added to keystore

C:\Program Files (x86)\Java\jdk1.7.0_25>

  1. 卸载 Java 并重新安装,然后重复步骤 1。

  2. 添加以下代码行:

    System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files (x86)\\Java\\jdk1.7.0_25\\jre\\lib\\security\\cacerts");

    System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

其他注意事项:代码在使用非 SSL 连接时工作正常,但在尝试更新用户信息时出现 LDAP 错误 53。最后,如果有不使用 SSL 的解决方案,我不介意。

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