OpenLDAP TLS认证


10

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

检查证书文件的权限。如果设置了密码,还请删除密码。
zeridon

感谢你及时的答复。除.key文件位于600上以外,其他权限均设置为644。如何检查/删除密码?我不记得CN =配置..设置任何密码
阿马尔Prasovic

2
我的意思是证书本身的密码(而不是cn = config的密码)。检查:mnx.io/blog/removing-a-passphrase-from-an-ssl-key
zeridon

不,不是这样。密钥文件是在没有密码的情况下创建的。
Amar Prasovic

您可以尝试使用简单身份验证(而非-Y EXTERNAL)加载ldiff吗
zeridon

Answers:


17

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

1
这也对我有用!
sonicwave

2
就我而言,我不得不使用chgrp openldap。无论如何,这是一个权限问题。+1
xonya

私有目录也必须是可执行文件才能遍历。sudo chgrp ssl-cert /etc/ssl/private && sudo chmod g+X /etc/ssl/private
杰夫·普基特

3

好吧,我不知道这是解决方案还是解决方案,但我设法使其正常运行。

我首先用以下方法打了巴掌:

service slapd stop

然后我以调试模式启动它:

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

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

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


2

作为A. Gutierrez回答的后续措施,检查每个文件访问权限的最佳方法是运行sudo -u openldap cat <filename>。我多次查看了所有文件,并希望正确设置权限。原来是openldap的一个小组问题。一旦我终于弄清楚了,一个简单的方法就可以sudo usermod -a -G ssl-cert openldap解决。


2

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

它在视觉上是相当不错的/etc/apparmor.d/usr.sbin.slapd。默认情况下,此配置文件允许在默认位置读取证书。

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


如果使用letencrypt,这就是解决方案。/etc/apparmor.d/usr.sbin.slapd将以下行添加到:/ etc / letsencrypt / r,/ etc / letsencrypt / ** r,然后重新加载apparmor配置文件。
伯恩哈德


0

我也有这个问题。问题是运行slapd的用户没有访问证书文件的权限。确认该文件的所有者是openldap用户。


0

对我而言,问题是记录的顺序错误-这是可行的:

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

不幸的是,这似乎是您几乎获得的“默认”错误。@wulfsdad的答案通常会解决它。

我总是忘记的另一件事是,默认情况下,在ubuntu slapd上希望使用openssl格式的密钥。我经常使用PCKS#8,但希望它能正常工作(公平地说,应该这样)。如果您尝试了上面所有的答案,请确保密钥具有正确的格式。在搜寻错误时,您通常会读到错误的权限,然后大吃一惊,为什么apache不适合使用非常关键的slapd。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.