我想使用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命令时有没有办法使用证书
答案 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的解决方法)。