0

我已经创建了一个测试环境。我有一个 ldap 客户端、ldap 侦听器(作为 ldap 代理)和一个 ldap 服务器。Ldap 客户端将 ldap 请求发送到端口389(SSL) 上的 ldap 代理。ldap 代理解码 ldap 请求并将它们转发到 port 上的 ldap 服务器389。并且代理成功地将 ldap 服务器的回复转发给 ldap 客户端。

我在 ldap 服务器上创建了 SSL 证书。而这次我测试了 ldap 客户端在端口 389 (SSL) 上向 ldap 代理发送 ldap 请求。ldap proxy 将请求转发到 ldap server 的 636 端口,proxy 将 ldap server 的回复成功转发给 ldap client。

但是当我尝试在双方都使用 SSL 时出现问题。我是说

ldap 客户端(636 端口)-> ldap 代理(636 端口)-> ldap 服务器(636 端口)

我的客户抛出异常

javax.net.ssl.SSLHandshakeException:握手期间远程主机关闭连接

我使用 unboundid ldap sdk 和 LdapDebugger 示例作为 ldap 代理。如何配置 ldaplistener 以接受 SSL 加密请求(端口 636)?

提前致谢...

4

1 回答 1

0

如果您使用 LDAP SDK 提供的 ldap-debugger 工具,它目前仅支持 SSL 与后端服务器通信,但不支持与客户端通信。也就是说,“--useSSL”选项仅适用于 LDAP 调试器和后端目录服务器之间的通信,而不适用于客户端和 LDAP 调试器之间的通信。但是,因为这可能是一个非常有用的功能,所以我刚刚提交了一组添加此功能的更改,因此如果您检查并构建最新版本的 LDAP SDK,您会发现 ldap-debugger 工具有一个控制这一点的新“--listenUsingSSL”参数。

请注意,无论您是使用 ldap-debugger 工具还是通过 Java 代码创建了自己的侦听器,您都需要确保您拥有包含将呈现给客户端的 SSL 证书的 Java 密钥库。如果您使用的 LDAP 服务器是基于 Java 的(例如,随 LDAP SDK 提供的内存目录服务器),那么您可能已经有了它。否则,您需要创建一个。如果您只是出于测试目的这样做,那么自签名证书应该没问题(只要客户端信任它,或者配置为盲目信任所有证书)。

于 2013-02-01T18:47:05.500 回答