0

我必须在 Active Directory 服务器上启用 SSL,为此我遵循了这里提到的每一个步骤:http ://www.linuxmail.info/enable-ldap-ssl-active-directory/

现在我不确定 SSL 是否真的正确启用了?

如果我在服务器本身上运行 ldp,我想我可以连接到 636 端口。但是在我的系统上,我在 ldp 客户端上看不到 SSL 选项?

我还有另外两个 LDAP 客户端(Softerra LDAP Browser 和 Apache Directory Studio),但我无法使用 ldaps(在 636 端口上)进行连接。我想我需要导入 AD 服务器中使用的证书,以便这些工具可以信任我在 AD 服务器上使用的自签名证书。

使用 Java 代码,我已将证书添加到 cacerts(使用此处提到的步骤获得证书:http ://www.linuxmail.info/export-ssl-certificate-windows-2003/ ),但是我仍然无法连接到 AD使用 SSL。

我尝试了 SSL 和 TSL:

TLS:

// got LdapContext using ldap (not with ldaps)
StartTlsResponse tls = (StartTlsResponse)ctx.extendedOperation(new StartTlsRequest());

它给出了以下异常:

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

SSL:

String ldapURL = "ldaps://<domain-name>:636";
String keystore = "C:/Oracle/Middleware/jdk160_24/jre/lib/security/cacerts";
System.setProperty("javax.net.ssl.trustStore",keystore);
env.put(Context.SECURITY_PROTOCOL,"ssl");
// other properties are set in env
LdapContext ctx = new InitialLdapContext(env, null);

它给出了以下异常:

javax.naming.CommunicationException: <domain-name>:636 [Root exception is java.net.ConnectException: Connection timed out: connect]

谁能建议我错在哪里?

谢谢。

4

2 回答 2

1

这个是固定的。

我使用错误(相当不完整)的命令来导入证书。

我正在使用:

keytool -import -alias mycert -keystore cacerts -file d:\mycert.cer

当我使用以下内容时:

keytool -import -noprompt -trustcacerts -alias mycert -file c:/mycert.cer -keystore C:/Oracle/Middleware/jdk160_24/jre/lib/security/cacerts -storepass changeit

它开始工作了。

于 2013-08-02T14:16:39.527 回答
0

如果您无法让 TLS 工作,那么 SSL 就不太可能工作。您确定您获得了正确的证书并正确配置了密钥库吗?基于尝试使用 TLS 时的 SSLHandshakeException,似乎设置不正确。

查看此 SO 答案,了解有关如何验证您的密钥库是否已正确设置的一些提示:https ://stackoverflow.com/a/9619478/1792088

于 2013-06-27T23:17:30.760 回答