LDAP搜索用户基于Linux命令行中的证书

时间:2015-01-08 07:30:47

标签: linux ldap ldap-query

我想使用ldapsearch搜索用户。

但托管服务提供商提供了一些证书(CA)。我在ldapconf中添加了该证书。 所以在执行ldapsearch命令之前,我按如下方式运行openssl

  

openssl s_client -connect hostname -CAfile /certificate.pem

通过openssl连接后 我正在另一个终端

执行以下命令
ldapsearch -h hostname -p portno -D uid=mailid@domain.con, dc=global,dc=example,dc=net 

现在我想知道在执行ldapsearch命令时有没有办法使用证书

1 个答案:

答案 0 :(得分:3)

执行以下操作应该可行:

env LDAPTLS_CACERT=/certificate.pem ldapsearch -h hostname -p portno -D uid=mailid@domain.con, dc=global,dc=example,dc=net

虽然,我会用:

env LDAPTLS_CACERT=/certificate.pem ldapsearch -H ldaps://hostname:portno/ -D uid=mailid@domain.con, dc=global,dc=example,dc=net

确保它尝试使用ldaps而不是启发式。

如果您仍然收到错误,可以添加-ZZ,这样可以提供更好的错误消息。

显而易见的问题是使用过期的证书,第二个最明显的问题是请求中没有使用与证书中相同的名称。您可以使用openssl s_client -connect hostname:portno读取服务器证书 - 会出现如下行:

subject=/C=IE/CN=hostname.domain.local

您必须确保ldapsearch请求的主机名与CN=...项中列出的主机名匹配。如果它不匹配则您将无法连接(这是简单的证书验证,如果有其他名称,那么您可以尝试:openssl x509 -text -noout -in /certificate.pem | grep DNS

最后需要注意的是Mac OSX不尊重LDAPTLS_CACERT环境变量。您必须将证书导入到钥匙串中(在这种情况下我不知道OSX的解决方法)。