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

我正在使用OpenLDAP服务器与Ubuntu 12.04。 我已经按照Ubuntu帮助页上的指示进行操作,并且可以在没有安全的情况下愉快地连接。 为了testing我的连接,我使用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 

据我所知,我已经正确设置了我的证书,但不pipe为什么我尝试,我似乎无法让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:///”

  • 几个小时的谷歌search,其中大部分导致添加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 

几个小时后,我希望有人看到这个问题,并/或知道如何解决这个问题。 请让我知道,如果我应该添加更多的信息,或者如果你需要进一步的数据。

问题在于Ubuntu 12.04附带的GnuTLS版本使用有缺陷的encryption后端。

GnuTLS应该从使用gcrypt作为encryption后端切换到荨麻,但有许可问题。 特别是一些GPL许可证允许与新版本或旧版本的GPL链接,有些则不允许。

你可以用configuration了荨麻的源代码重新编译GnuTLS,或者用Howard Chubuild议的方式重新编译GnuTLS。 前者的说明在这个错误报告中。

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

LDAPTLS_REQCERTvariables设置为never忽略可能过期或无效的服务器上的证书,即:

 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)" 

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

在客户端机器上,您正在运行ldapsearch,您必须在ldap.conf中

TLS_CACERT /etc/ssl/certs/cacert.crt

我已经从存储了CA证书的服务器configuration中复制了path。 将CA证书从服务器复制到与path相同的位置的客户端。

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

得到这个相同的问题,我的失败的原因是使用12.04上的LDAP(slapd包是用GNUTLS构build的)以及我创build的使用openssl的证书(使用CA.pl脚本)

解决scheme:通过GNUTLS的certtool重新创build自签名证书,然后使用TLS工作我的LDAP。

我遇到了一个类似的问题 – 试图使用自签名证书对LDAPS目录服务器进行ldapsearchsearch。 下面是从-d8debugging级别设置的ldapsearch得到的实际错误:

 TLS certificate verification: Error, self signed certificate in certificate chain TLS: can't connect. ldap_bind: Can't contact LDAP server (-1) additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 

我发现服务器已经设置了“TLS_REQCERT try”,所以我不想改变实际的服务器的ldap.conf,以防其他应用程序的安装和运行。 发现有一个本地configuration文件“.ldaprc”用于使ldapsearch(和其他实用程序)在没有全局configuration的情况下工作。 这使我可以覆盖TLS_REQCERT设置成为“允许”,这就解决了我的ldapsearch问题:

 #~/.ldaprc TLS_REQCERT allow 

这是就地和-d8的输出:

 TLS certificate verification: Error, self signed certificate in certificate chain TLS: unable to get peer certificate. ... (actual query works)...