Ubuntu 12.04 LDAP SSL 自签名证书不被接受

Ubuntu 12.04 LDAP SSL 自签名证书不被接受

我正在使用 Ubuntu 12.04,使用 OpenLDAP 服务器。我已遵循Ubuntu 帮助页面上的说明并且可以顺利地进行连接而无需安全保护。为了测试我的连接,我使用ldapsearch以下命令:

ldapsearch -xv -H ldap://ldap.[my host].local -b dc=[my domain],dc=local -d8 -ZZ

我也用过:

ldapsearch -xv -H ldaps://ldap.[my host].local -b dc=[my domain],dc=local -d8

据我所知,我已经正确设置了我的证书,但无论我如何尝试,我似乎都无法ldapsearch接受我的自签名证书。

到目前为止,我已经尝试过:

  • 更新我的/etc/ldap/ldap.conf文件如下:
 BASE    dc=[my domain],dc=local
 URI     ldaps://ldap.[my host].local
 TLS_CACERT      /etc/ssl/certs/cacert.crt
 TLS_REQCERT allow
  • 更新我的/etc/ldap.conf文件如下:
base dc=[my domain],dc=local
uri ldapi:///ldap.[my host].local
uri ldaps:///ldap.[my host].local
ldap_version 3
ssl start_tls
ssl on
tls_checkpeer no
TLS_REQCERT allow
  • 更新我的/etc/default/slapd以包括:

    SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

  • 经过几个小时的谷歌搜索,大部分结果都是添加了TLS_REQCERT allow

我看到的确切错误是:

ldap_initialize( ldap://ldap.[my host].local )
request done: ld 0x20038710 msgid 1
TLS certificate verification: Error, self signed certificate in certificate chain
TLS: can't connect.
ldap_start_tls: Connect error (-11)
    additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

经过几个小时的等待,我希望其他人也看到了这个问题,并且/或者知道如何修复它。如果我需要添加更多信息,或者您需要更多数据,请告诉我。

答案1

问题是 Ubuntu 12.04 附带的 GnuTLS 版本使用了有缺陷的加密后端。

GnuTLS 原本应该从使用 gcrypt 作为加密后端切换到 nettle,但存在许可问题。具体来说,一些 GPL 许可证允许与 GPL 的新版本或旧版本链接,而有些则不允许。

您可以从配置了 nettle 的源代码重建 GnuTLS,或者按照 Howard Chu 建议的方式破解 gcrypt。前者的说明位于此错误报告中。

https://bugs.launchpad.net/bugs/926350

答案2

将变量设置LDAPTLS_REQCERTnever忽略服务器上可能已过期或无效的证书,即:

LDAPTLS_REQCERT=never ldapsearch -D "cn=drupal-test,ou=Services,dc=example,dc=com" -w my_pass -h ldap.example.com -b "ou=People,dc=example,dc=com" -s sub -x -ZZ "(uid=admin)"

或者检查服务器是否具有正确的证书。

答案3

在运行 ldapsearch 的客户端计算机上,您必须在 ldap.conf 中

TLS_CACERT /etc/ssl/certs/cacert.crt

我从您的服务器配置中复制了您存储 CA 证书的路径。将 CA 证书从服务器复制到与该路径相同的客户端位置。

看这里 - http://www.openldap.org/pub/ksoper/OpenLDAP_TLS.html

答案4

遇到了同样的问题,我的失败原因是在 12.04 上使用 LDAP(slapd 包是用 GNUTLS 构建的)以及使用 openssl(使用 CA.pl 脚本)创建的证书

解决方案:通过 GNUTLS 的 certtool 重新创建自签名证书,然后我的带有 TLS 的 LDAP 就可以工作了。

相关内容