为基于 SSL 的 OpenLDAP 设置 Linux 客户端

为基于 SSL 的 OpenLDAP 设置 Linux 客户端

我正在尝试使用运行 OpenLDAP(并使用 OpenSSL,而不是 GnuTLS)的服务器设置 SSL。

服务器似乎运行良好:我可以使用 Apache Directory Studio 进行身份验证ldap://,也可以ldaps://从 Apache Directory Studio 使用。我也可以从客户端使用 LDAPS,只要我在 /etc/ldap.conf 中有此设置:

tls_checkpeer no

当我尝试使用tls_checkpeer yesSSL 连接时,它就被拒绝。

我在服务器上有以下设置:

olcTLSCACertificateFile  /etc/ssl/certs/cacert.pem
olcTLSCertificateFile    /etc/ssl/private/newcert.pem
olcTLSCertificateKeyFile /etc/ssl/private/newreq.pem

客户端有以下相关条目:

# ssl on
uri ldaps://192.168.1.15
tls_checkpeer no
# tls_cacertdir /etc/ssl/certs
# tls_cacertfile /etc/ssl/certs/cacert.pem

文件 /etc/ssl/certs/cacert.pem 可供用户读取。使用上述配置,它可以正常工作。如果我取消注释两个注释tls_*配置条目中的一个,则更改tls_checkpeer yes会失败。

我尝试过使用 cacert.pem 和 newcert.pem 作为证书 ( tls_cacertfile),但不起作用。cacert.pem 有一个-----BEGIN CERTIFICATE-----部分,newcert.pem 也有。

但是,cacert.pem 下有以下内容X509v3 extensions

X509v3 Basic Constraints: 
    CA:TRUE

...并且 newcert.pem 文件在同一部分中包含以下内容:

X509v3 Basic Constraints: 
    CA:FALSE
Netscape Comment: 
    OpenSSL Generated Certificate

/etc/ssl/certs 中的其他证书除了标有 的块外,没有任何内容BEGIN CERTIFICATE

使用此命令:

openssl s_client -connect 192.168.6.144:636 -showcerts

我可以看到会话中使用的 cacert.pem 和 newcert.pem 的内容。

我没有对客户端或服务器上的 /etc/ldap/ldap.conf 进行任何更改。

来自客户端的错误包括:

Feb  8 14:32:24 foo nscd: nss_ldap: could not connect to any LDAP server as cn=admin,dc=example,dc=com - Can't contact LDAP server
Feb  8 14:32:24 foo nscd: nss_ldap: failed to bind to LDAP server ldaps://bar: Can't contact LDAP server
Feb  8 14:32:24 foo nscd: nss_ldap: could not search LDAP server - Server is unavailable

服务器上没有特殊的日志条目。客户端是 Ubuntu Lucid Lynx 10.04,服务器也是。全部使用 nscd。

尝试在 Red Hat Enterprise Linux 5.7 系统上复制该问题,结果却在相反的方向失败:本该失败的事情却没有失败:使用tls_checkpeer yestls_cacertdir目录。我需要 SSL 在两个系统上都能工作;我们同时使用了 Ubuntu 和 RHEL。

每次更改配置后我都会重新启动 nscd。

这些是我的实际问题:

  • 我如何才能让该tls_checkpeer选项起作用?(主要问题)
  • ssl on在客户端上实际上做了什么吗?

谢谢。

答案1

在客户端和服务器中尝试将以下内容添加到 /etc/ldap/ldap.conf

TLS_REQCERT never

顺便说一句,OpenLDAP 似乎已弃用 SSL,最好使用 TLS。请参阅http://httpd.apache.org/docs/2.2/mod/mod_ldap.html搜索“OpenLDAP SDK”。配置相同,只是您将使用端口 389,而不是在 uri 中使用“ldaps://”。

相关内容