我正在尝试在主 ldap 服务器和从属 ldap 服务器之间添加 TLS 安全复制。不使用 TLS 的复制运行良好。
我从从属设备遇到此错误:slapd_client_connect: URI=ldap://master.domain.com Error, ldap_start_tls failed (-11)
这是我的配置:
----- Master -----
/etc/ldap/ldap.conf
URI ldap://master.domain.com/
TLS_CACERT /etc/ssl/cacert.pem
TLS_REQCERT demand
/etc/ldap/slapd.d/cn=config.ldif
olcTLSCertificateKeyFile: /etc/ssl/master-key.pem
olcTLSCertificateFile: /etc/ssl/master-cert.pem
----- Slave -----
/etc/ldap/ldap.conf
URI ldap://slave.domain.com/
TLS_CACERT /etc/ssl/cacert.pem
TLS_REQCERT demand
/etc/ldap/slapd.d/cn=config.ldif
olcTLSCertificateKeyFile: /etc/ssl/slave-key.pem
olcTLSCertificateFile: /etc/ssl/slave-cert.pem
/etc/ldap/slapd.d/cn=config/olcDatabase{1}mdb.ldif
olcSyncrepl: rid=001, provider=ldap://master.domain.com binddn="cn=readonly,ou=users,dc=master,dc=domain,dc=com" bindmethod=simple credentials="mypass" searchbase="dc=master,dc=domain,dc=com" type=refreshAndPersist timeout=0 network-timeout=0 retry="60 +" starttls=critical tls_reqcert=demand
这是我已经检查/尝试过的:
- 两台服务器上的证书均归用户所有
openldap
- 两台服务器上的 cacert.pem 指纹相同
- 证书的有效期是
- cacert.pem 中的 cn 等于主服务器的 cn
- 从属设备可以使用以下命令在主设备上进行搜索:
ldapsearch -ZZ -x -H master.domain.com -b "ou=groups,dc=master,dc=domain,dc=com"
- 更改从属
olcTLS
值以使用主证书 - 使用
ldaps://
而不是ldap:// + starttls
(ldapsearch -ZZ -H ldaps://
正在工作)
在网上进行一些研究之后,它经常谈论 CA 证书(其中的 cn、文件的所有者等),但我已经检查了这些情况。
你知道问题出在哪里吗?
答案1
与我在多个教程中读到的相反,即使我们使用自签名证书,我们也需要在 olcTLS 变量中配置 CA 文件。
我相信该/etc/ldap/ldap.conf
文件未被读取,因为 OpenLDAP 现在使用带有“新”配置系统的 slapd.d 文件夹。
这是我最终为激活主/从复制的 TLS 所做的配置:
----- Master -----
/etc/ldap/slapd.d/cn=config.ldif
olcTLSCACertificateFile: /etc/ssl/cacert.pem
olcTLSCertificateKeyFile: /etc/ssl/master-key.pem
olcTLSCertificateFile: /etc/ssl/master-cert.pem
----- Slave -----
/etc/ldap/slapd.d/cn=config.ldif
olcTLSCACertificateFile: /etc/ssl/cacert.pem
olcTLSCertificateKeyFile: /etc/ssl/slave-key.pem
olcTLSCertificateFile: /etc/ssl/slave-cert.pem
笔记 :
- 奴隶证书需要有它自己
cn
的 - 如果遇到
mods check (objectClass: value #2 invalid per syntax)
错误,则表示从服务器缺少主服务器上加载的某些模式