ldapsearch 读取证书并谎报信息,结果无法连接

ldapsearch 读取证书并谎报信息,结果无法连接

我对 ldap 与 SSL/TLS 配合使用感到头疼。我可以确认服务器正在监听并在端口 636 上响应 SSL 请求。openssl s_client -connect freia.fqdn:636 -showcerts产生预期的输出,gnutls-cli-debug -p636 localhost产生。由于 ubuntu 存储库中的版本存在一些错误配置,无法完成安装,因此服务器已从源代码构建。服务器正在使用命令运行slapd -d -1 -h 'ldap:/// ldaps:///'截取的启动日志这里.ldapsearch -H ldap:///也产生预期的输出。

ldapsearch -H ldaps:/// 

返回

ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)

ldapsearch -Z -H ldaps:/// 

返回

ldap_start_tls: Can't contact LDAP server (-1)
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)

服务器日志显示:

TLS trace: SSL_accept:before/accept initialization
tls_read: want=11, got=0

TLS: can't accept: (unknown)

由于没有发送任何内容,我检查了 ldapsearch 实际发送的内容。它说找不到 pem 文件

TLS: could not load verify locations (file:`/etc/ssl/private/freia_slapd_key.pem',dir:`').

根据以下说法,这完全是胡说八道strace ldapsearch -Z -H ldaps:/// -d -1

open("/etc/ssl/private/freia_slapd_key.pem", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0440, st_size=883, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb770b000
read(4, "-----BEGIN RSA PRIVATE KEY-----\n"..., 4096) = 883
read(4, "", 4096)                       = 0
close(4)                                = 0
munmap(0xb770b000, 4096)                = 0
write(2, "TLS: could not load verify locat"..., 91TLS: could not load verify locations (file:`/etc/ssl/private/freia_slapd_key.pem',dir:`').

所有证书都是可读的(或应该是)

-rw-r--r-- 1 root root 1082 2011-12-26 16:50 /etc/ssl/certs/cacert.pem
-rw-r--r-- 1 root root 1013 2011-12-26 16:51 /etc/ssl/certs/freia_slapd_cert.pem
-r--r----- 1 root root  883 2011-12-26 16:50 /etc/ssl/private/freia_slapd_key.pem

任何想法都将不胜感激!干杯。配置文件ldap配置文件

答案1

问题出在 ldap.conf 中:

TLS_CACERT /etc/ssl/private/freia_slapd_key.pem

您使用私人钥匙你应该使用根证书。一般情况下,用正确的 CA 证书替换它 - ldapsearch 可以用作受信任的“根”的证书来确认它在途中遇到的所有其他(“不受信任的”)证书。

如果您的 /etc/ssl/certs/freia_slapd_证书.pem(不是 /etc/ssl/private/freia_slapd_钥匙.pem) 是自签名的,这意味着它是自己的根,您可以/应该将其用作 TLS_CACERT。但这意味着它永远不会被公众信任,公众会使用已知的“根”(如 Verisign 等 CA)。

顺便说一句,TLS_KEY 和 TLS_CERT 在系统范围的 ldap.conf 中被忽略(理所当然)。请参阅http://manpages.ubuntu.com/manpages/natty/man5/ldap.conf.5.html

相关内容