我遵循RHEL7:为用户连接配置LDAP目录服务,在CentOS Linux 7版本上配置openldap。
首先,我创建/etc/openldap/changes.ldif
文件并粘贴内容,当然将密码替换为先前创建的密码。
然后我可以使用命令将新配置发送到 slapd 服务器
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/changes.ldif
一旦我这样做,我就会收到以下错误:
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/changes.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)
对于运行 slapd 的用户来说,所有文件都是可读的。 怎么了?我找不到任何有用的东西来喂养搜索引擎。
我一直在寻找解决方案已经有一段时间了,但目前我发现的只是两个人
- 回复:错误 80 与 ldapmodify
- ldap_modify:其他(例如,特定于实现(错误 (80(
在我的特定情况下,我遇到了这个错误,我真的花了几天时间在网上搜索答案。事实证明,就我而言,订单很重要。正确的顺序是:
-
olcTLSCACertificateFile
, -
olcTLSCertificateKeyFile
, -
olcTLSCertificateFile
.
直到我文件中属性的顺序是上面的顺序,我遇到了可怕且无用的"ldap_modify:其他(例如,特定于实现(错误 (80("消息。
我尝试使用 sudo -u ldap nano <path to each file>
检测权限错误。每个文件都很好。
nano透露这些文件是DOS格式的:我将它们转换为Linux行结尾,但无济于事。
在我读到的所有内容中,有一个关于证书文件是否采用正确的 PEM 格式的问题。我无法检查,也许这也是此错误的原因。
唯一有效的方法是注释掉文件中的一些行,直到我在运行 ldapsearch -H ldapi:// -Y EXTERNAL -b "cn=config" -LLL -Q -s base
后看到更改。
另请注意,我将文件中的更改"压缩"为单个更改。我所说的"压缩"是指我没有三个更改,而只有一个:而不是这个(我使用的是 Ansible,所以这实际上是一个 Jinja2 模板(
dn: cn=config
changetype: modify
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: {{ cert_parentdir_ca_chain }}/{{ cert_filename_ca_chain }}
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: {{ cert_parentdir_wildcard_cert }}/{{ cert_filename_wildcard_cert }}
dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: {{ ldap_cert_parentdir_key }}/{{ cert_filename_key }}
我有这个
dn: cn=config
changetype: modify
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: {{ cert_parentdir_ca_chain }}/{{ cert_filename_ca_chain }}
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: {{ ldap_cert_parentdir_key }}/{{ cert_filename_key }}
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: {{ cert_parentdir_wildcard_cert }}/{{ cert_filename_wildcard_cert }}
呵呵。