OpenLDAP 中的 TLS 协商问题

OpenLDAP 中的 TLS 协商问题

我有 OpenLDAP Master-Slave 架构。有一天,我重启了 LDAP Slave 中的 slapd 服务,然后在日志中发现了 TLS 协商问题。在重新启动服务之前,它运行正常,没有任何问题

然后我尝试调试该问题,我发现一些常见问题会触发 TLS 协商问题。

  1. SSL 证书可能已过期- 就我而言,情况并非如此,我已经验证了证书是有效的
  2. 证书 CN 名称与服务器名称不匹配- 就我而言,我的证书 CN=*.example.com,我的服务器名称是 ldap.example.com 和 ldap-slave.example.com。
  3. 证书文件中的权限问题- 我有 2 个目录(certs - [包含证书、ca 证书和密钥]、cacert - [仅包含 cacert]),这两个目录都具有读写权限,并归 LDAP 用户所有。

这是 slapd 使用的配置。

dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/openldap/slapd.args
olcDisallows: bind_anon
olcLogLevel:: YW55IA==
olcPidFile: /var/run/openldap/slapd.pid
olcRequires: authc
olcTLSCACertificateFile: /etc/openldap/certs/example.ca.crt
olcTLSCACertificatePath: /etc/openldap/certs
olcTLSCertificateFile: /etc/openldap/certs/example.crt
olcTLSCertificateKeyFile: /etc/openldap/certs/example.key

dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib64/openldap
olcModuleLoad: {0}syncprov.la

dn: cn=module{1},cn=config
objectClass: olcModuleList
cn: module{1}
olcModulePath: /usr/lib64/openldap
olcModuleLoad: {0}auditlog.la

这是我的 ldap.conf 文件

#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE   dc=example,dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT  12
#TIMELIMIT  15
#DEREF      never

#TLS_CACERT /etc/openldap/cacerts/example.ca.crt
#TLS_REQCERT demand
TLS_CACERTDIR /etc/openldap/cacerts
#TLS_CACERT /etc/openldap/certs/example.ca.crt
TLS_REQCERT allow
# Turning this off breaks GSSAPI used with krb5 when rdns = false
SASL_NOCANON    on
URI ldaps://ldap.example.com/ ldaps://ldap-slave.example.com/
BASE dc=example,dc=com

所以请帮我调试这个问题。

答案1

我们可以获得包含错误的日志来帮助您吗?

另外,您不需要同时使用 olcCACertificatePath 和 olcCACertificateFile,对我来说,仅使用 olcCACertficatePath 的配置就足够了。我不知道这是否是您的错误根源,但您可以尝试删除其中一个。

相关内容