题 OpenLDAP TLS身份验证


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

9
2017-07-10 08:31




检查证书文件的权限。如果设置了密码,也请删除密码。 - zeridon
感谢您及时回复。权限设置为644,除了.key文件在600上如何检查/删除密码?我不记得为cn = config设置任何密码了.. - Amar Prasovic
我的意思是证书本身的密码(不是在cn = config上)。校验: mnx.io/blog/removing-a-passphrase-from-an-ssl-key - zeridon
不,事实并非如此。密钥文件创建时没有密码。 - Amar Prasovic
你可以试着用简单的auth加载ldiff(不是-Y EXTERNAL) - zeridon


答案:


我正在遵循相同的指南并遇到同样的问题。如果您执行首先在违规的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

13
2018-06-19 19:58



这对我也有用! - sonicwave
在我的情况下,我不得不使用 chgrp openldap。无论如何,这是一个许可问题。 +1 - xonya
私有目录也必须是可执行的才能遍历。 sudo chgrp ssl-cert /etc/ssl/private && sudo chmod g+X /etc/ssl/private - Jeff Puckett


作为后续行动 A.古铁雷斯的答案,检查每个文件的访问权限的最佳方法是运行 sudo -u openldap cat <filename>。我多次查看所有文件,他们看起来正确设置了权限。原来是openldap的群体问题。有一次我终于想通了,简单了 sudo usermod -a -G ssl-cert openldap 为我解决了。


2
2018-05-28 13:03





好吧,我不知道这是一个解决方案,还是只是一个解决方法,但我设法让它工作。

我首先用以下方法停止slapd:

service slapd stop

然后我在调试模式下启动它:

slapd -h ldapi:/// -u openldap -g openldap -d 65 -F /etc/ldap/slapd.d/ -d 65

重要的是只能使用ldapi:/// URL启动它。启动后,我执行了ldapmodify命令并导入了属性。

最后我停止了调试模式并正常启动了slapd。


1
2017-07-10 13:03





有时问题出在slapd服务的apparmor配置文件中。确保apparmor配置文件允许守护程序的证书路径。

它非常直观 /etc/apparmor.d/usr.sbin.slapd。默认情况下,此配置文件允许读取默认位置的证书。

尽管有适当的unix权限,Apparmor仍应防止对守护程序的可执行文件进行未指定的操作。


1
2017-09-12 11:21



如果您使用letsencrypt,这就是解决方案。添加以下行 /etc/apparmor.d/usr.sbin.slapd:/ etc / letsencrypt / r,/ etc / letsencrypt / ** r,并重新加载apparmor配置文件。 - Bernhard


我也有这个问题。问题是运行slapd的用户无法访问certs文件。检查该文件的所有者是openldap用户。


0
2018-01-27 12:30





对我来说问题是记录的顺序错误 - 这是有效的:

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

0
2017-12-14 16:27





不幸的是,这似乎是你几乎可以获得的“默认”错误。 @ wulfsdad的anwser通常会修复它。

我经常忘记的另一件事是,默认情况下,ubuntu slapd需要openssl格式的密钥。我经常,但PCKS#8键入其中,并期望它只是工作(这是公平的应该)。如果您尝试了上面的所有导体,也要确保密钥格式正确。当谷歌搜索错误时,你通常会阅读有关错误权限的内容,并且为什么apache适用于非常关键的slapd不喜欢。


0
2018-01-23 18:25