我试图按照https://help.ubuntu.com/lts/serverguide/openldap-server.html实现TLS当我试图用这个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 (eg, implementation specific) error (80)
我究竟做错了什么?
编辑:当我尝试使用简单的身份validation我得到了以下错误:
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
我是按照同一指南,并有同样的问题。 如果您先执行了违规的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
作为A. Gutierrez答案的后续,检查每个文件访问权限的最佳方法是运行sudo -u openldap cat <filename> 。 我多次查看所有的文件,他们看起来有正确的权限设置。 原来是openldap的一个组问题。 一旦我终于明白,一个简单的sudo usermod -a -G ssl-cert openldap为我解决了它。
那么我不知道这是一个解决scheme还是只是一个解决方法,但我设法得到它的工作。
我第一次停止slapd:
service slapd stop
然后我开始在debugging模式下:
slapd -h ldapi:/// -u openldap -g openldap -d 65 -F /etc/ldap/slapd.d/ -d 65
重要的是只用ldapi:/// URL启动它。 开始之后,我执行了ldapmodify命令并导入了属性。
最后,我停止了debugging模式并正常启动slapd。
我也有这个问题。 问题是运行slapd的用户没有权限访问证书文件。 检查出该文件的所有者是openldap用户。
对我来说,问题出在logging的错误顺序 – 这是一个有效的工作:
dn: cn=config changetype: modify replace: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/ssl/certs/cm_ca_cert.pem - # This never worked for me, no idea why #add: olcTLSCipherSuite #olcTLSCipherSuite: TLSv1+RSA:!NULL #- replace: olcTLSVerifyClient olcTLSVerifyClient: never - replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/ssl/certs/cm_server.pem - replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ssl/private/cm_server.key
不幸的是,这似乎是几乎任何事情都可以得到的“默认”错误。 @ wulfsdad的anwser通常修复它。
我经常忘记的另外一件事是,默认情况下,ubuntu slapd需要openssl格式的密钥。 我规定,但PCKS#8键入它,并期望它只是工作(这是公平的,应该)。 如果您尝试了以上所有的连接器,请确保密钥格式正确。 当你用错误的方式search错误时,你通常会读到关于错误的权限的问题,并且为什么apache和slapd关键字不一样。
有时问题出在slapd服务的configuration文件中。 确保apparmorconfiguration文件已经允许守护进程的证书path。
这在/etc/apparmor.d/usr.sbin.slapd是非常直观的。 默认情况下,此configuration文件允许读取默认位置的证书。
Apparmor应该防止守护进程可执行文件的未指定的动作,尽pipe适当的Unix权限。