我正在尝试在Server 2008 R2上使用ssl的ldap。 得到它所有设置,并能够连接使用ldp.exe到sslcheckboxdomain.example.org端口636。 这是本地服务器本身。
但是 – 我无法使用SSL和SSL端口636使用ldapsearch连接。没有ssl和端口389使用ldapsearch工作正常。
有任何想法吗? 我的客户需要安装证书吗? 我主要只是想encryptionldap连接。 谢谢你的帮助!
*编辑*
有效的命令:
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安装证书到客户端?
您的客户不需要自己的证书。 他们只需要信任签署LDAP服务器证书的证书颁发机构证书(或证书链)。 您不需要担心本地主机上的这一点,因为默认情况下CA证书已经被信任。
从您的问题来看,LDAP服务器是否也是证书颁发机构,以及是否使用CA证书作为LDAP证书也是不清楚的。 通常,这是两个不同的证书,证书颁发机构位于不同的机器上。
一些快速google'ing表示有一个选项,您可以在ldap.conf中设置名为TLS_CACERT或称为LDAPTLS_CACERT的等效环境variables,您可以指向包含环境中任何/所有CA证书(base64编码)的文件。
如果您的环境中只有一个CA,则应该能够下载其公共证书的base64编码版本。 如果你只能findDER编码的版本,你可以使用openssl将其转换为base64。
openssl x509 -inform der -in cacert.crt -out cacert.pem
可悲的是,他的预期行为。 LDAP只是奇怪的方式,至less对于Windows AD。 没有ldaps这样的东西,但是如果你指定了端口号,就会发生encryption。 试试这个命令:
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的服务默认端口上input纯文本stream量。 LDAP将在这里进行encryption的stream量。
我也不喜欢它,因为这会使validationencryption过程变得exception困难。 随着端口的变化,也许只是通过encryption的端口发送纯文本,但显式的模式/协议,你可以知道这是至less尝试。 显式协议模式还可以在需要时更轻松地在非标准端口上运行。 但不pipe喜不喜欢,都是这样。