我正在尝试让 ldaps 与 openldap 协同工作。我有一个为该域颁发的通配符 SSL 证书,并使用 ldapmodify 将相关文件添加到 cn=config,如下所示这里。
完成此操作后,我无法重新启动 OpenLDAP。
我已经完成 OpenLDAP 的设置并确认可以使用 ldap 成功绑定。
我在 AWS EC2 实例上使用 Ubuntu 14.04 TLS,并打开端口 389 和 636。
一些诊断:
/etc/init.d/slapd 重启
restart
* Stopping OpenLDAP slapd [ OK ]
* Starting OpenLDAP slapd [fail]
slapd -u ldap -g ldap -d 65
563e5b20 @(#) $OpenLDAP: slapd (Ubuntu) (Sep 15 2015 18:19:13) $
buildd@lgw01-53:/build/openldap-2QUgtL/openldap-2.4.31/debian/build/servers/slapd
ldap_pvt_gethostbyname_a: host=ip-172-31-62-171, r=0
563e5b20 daemon_init: listen on ldap:///
563e5b20 daemon_init: 1 listeners to open...
ldap_url_parse_ext(ldap:///)
563e5b20 daemon: listener initialized ldap:///
563e5b20 daemon_init: 2 listeners opened
563e5b20 No passwd entry for user ldap
答案1
问题是 apparmor 拒绝 openldap 访问密钥文件。通过正确配置 openldap 的权限解决了这个问题。
答案2
如果有人来这里寻找解决方案,使用 LetsEncrypt 的证书,这样应该可以修复这个问题。
通过两步为 LetsEncrypt 目录和文件设置正确的访问权限。
设置
$ sudo setfacl -m user:openldap:r-x /etc/letsencrypt/live
$ sudo setfacl -m user:openldap:r-x /etc/letsencrypt/archive
装甲
创建 /etc/apparmor.d/local/usr.sbin.slapd 并包含以下内容。
/etc/letsencrypt/live/your.domain.here r,
/etc/letsencrypt/archive/your.domain.here r,
/etc/letsencrypt/archive/your.domain.here/** r,
重新启动 apparmor。
sudo service apparmor restart
Slapd 现在可以正常重启并可以通过 LDAPS/TLS 访问。