我正在尝试按照https://help.ubuntu.com/lts/serverguide/openldap-server.html 当我尝试使用此 ldif 文件修改 cn=config 数据库时:
dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/test-ldap-server_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/test-ldap-server_key.pem
我收到以下错误:
ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)
我究竟做错了什么?
编辑:当我尝试使用简单身份验证时出现以下错误:
ldapmodify -x -D cn=admin,dc=example,dc=com -W -f certinfo.ldif
Enter LDAP Password:
ldap_bind: Invalid DN syntax (34)
additional info: invalid DN
答案1
我遵循了相同的指南,也遇到了相同的问题。如果您首先执行有问题的 ldapmodify 命令后列出的“加强所有权和权限”步骤,它将起作用,即:
sudo adduser openldap ssl-cert
sudo chgrp ssl-cert /etc/ssl/private
sudo chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem
sudo chmod g+X /etc/ssl/private
sudo chmod g+r /etc/ssl/private/ldap01_slapd_key.pem
和
sudo systemctl restart slapd.service
答案2
好吧,我不知道这是一个解决方案还是仅仅是一种变通方法,但我设法让它发挥作用。
我首先使用以下命令停止 slapd:
service slapd stop
然后我以调试模式启动它:
slapd -h ldapi:/// -u openldap -g openldap -d 65 -F /etc/ldap/slapd.d/ -d 65
重要的是仅使用 ldapi:/// URL 启动它。启动后,我执行了 ldapmodify 命令并导入了属性。
最后我停止了调试模式并正常启动了 slapd。
答案3
有时问题出在 slapd 服务的 apparmor 配置文件中。请确保 apparmor 配置文件已允许守护进程的证书路径。
它非常直观/etc/apparmor.d/usr.sbin.slapd
。默认情况下,此配置文件允许在默认位置读取证书。
尽管具有正确的 unix 权限,Apparmor 也应该阻止守护进程的可执行文件执行未指定的操作。
答案4
正如我在Ubuntu Launchpad 上的这个错误,此问题也可能由 apparmor 引起。通常这会在系统日志中显示为访问拒绝。
修复方法是在 /etc/apparmor.d/usr.sbin.slapd 中插入以下行:
/etc/letsencrypt/** r,
然后刷新个人资料:
# apparmor_parser -vr usr.sbin.slapd
# service apparmor restart