LDP SSL 端口 636 有效 - ldaps:// 无效

LDP SSL 端口 636 有效 - ldaps:// 无效

我正在尝试在 Server 2008 R2 上使用带 SSL 的 ldap。已全部设置完毕,能够使用 ldp.exe 连接到domain.example.org端口 636(带 SSL 复选框)。这是在本地服务器上。

但是 - 我无法使用 ldapsearch 通过 ssl 和端口 636 进行连接。使用 ldapsearch 时,没有 ssl 和端口 389 可以正常工作。

有什么想法吗?我的客户端是否需要安装证书之类的东西?我主要只是想加密 ldap 连接。感谢您的帮助!

* 编辑 *

有效的命令:

ldapsearch -x -b "dc=XX,dc=example,dc=org" -D "[email protected]" -H ldap://XX.example.org -W '(&(proxyAddresses=smtp*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'

不起作用的命令:

ldapsearch -x -b "dc=XX,dc=example,dc=org" -D "[email protected]" -H ldaps://XX.example.org:636 -W '(&(proxyAddresses=smtp*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'

我尝试了 -h 的变体并使用 -p 来指定端口。

我该如何将证书从服务器 2008 安装到客户端?

答案1

您的客户端不需要自己的证书。他们只需要信任签署 LDAP 服务器证书的证书颁发机构证书(或证书链)。您无需在本地主机上担心这个问题,因为 CA 证书已默认受信任。

从您的问题中无法确定 LDAP 服务器是否也是证书颁发机构,以及它是否也将 CA 证书用作 LDAP 证书。通常,这是两个不同的证书,并且证书颁发机构位于不同的机器上。

一些快速的谷歌搜索表明您可以在 ldap.conf 中设置一个名为 TLS_CACERT 的选项,或者一个名为 LDAPTLS_CACERT 的等效环境变量,您可以将其指向包含环境中任何/所有 CA 证书(base64 编码)的文件。

如果您的环境中只有一个 CA,那么您应该能够下载其公共证书的 base64 编码版本。如果您只能找到 DER 编码版本,则可以使用 openssl 将其转换为 base64。

openssl x509 -inform der -in cacert.crt -out cacert.pem

答案2

遗憾的是,这是预期的行为。LDAP 在这方面很奇怪,至少对于 Windows AD 来说是这样。没有这样的事情ldaps,但是如果你指定端口号,加密就会发生。试试这个命令:

ldapsearch -x -b "dc=XX,dc=XXX,dc=org" -D "[email protected]" -H ldap://XX.XXX.org:636 -W '(&(proxyAddresses=smtp*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'

对于除 LDAP 之外的大多数情况,您似乎要求在服务的默认 SSL 端口上进行纯文本通信。LDAP 将在此处进行加密通信。

我也不喜欢它,因为它让核实加密正在进行。如果端口发生变化,可能只是通过加密端口发送纯文本,但使用显式架构/协议,您可以知道它至少在尝试。显式协议模式还使在需要时在非标准端口上运行程序变得更容易。但不管喜欢与否,这就是现状。

相关内容