OpenLDAP TLS 身份验证

OpenLDAP TLS 身份验证

我正在尝试按照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

相关内容