我正在尝试向我的 OpenLDAP 实例添加 TLS 支持,并且根据无数文章,我应该添加以下内容(ldif):
dn: cn=config
add: oclTLSCACertificateFile
olcTLSCACertificateFile: /etc/ldap/ssl/slapd.pem
-
dn: cn=config
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ssl/slapd.pem
-
dn: cn=config
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile /etc/ldap/ssl/privkey.pem
我可以添加olcTLSCACertificate文件很好。但不是olcTLS证书文件或者olcTLSCertificateKey文件对于这个问题。
ldapmodify 只会给出一个实现特定错误 (80),这毫无用处。但 ldapadd/slapadd 会给出一个未知属性错误。
所以我检查了架构
# ldapsearch -b cn=schema,cn=config
并且确信所有 olcTLS* 属性都在那里。
那么我在这里做错了什么?
答案1
我用以下 ldif 解决了这个问题
dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ldap/ssl/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ssl/slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ssl/slapd_key.pem
请注意,我只有一个域名:在第一个条目中,我将其从后续属性中删除。事实上,我不得不使用代替:在olcTLSCACertificate文件因为它已经存在了。
答案2
实现特定错误 (80) 似乎有许多可能的原因,例如权限、所有权和相应生成的证书文件。但当我放弃时,添加属性的顺序真的让我很开心。最终对我有用的一个:
root@ldap:~# cat add7.ldif
dn: cn=config
changetype: modify
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/certs/privkey1.pem
root@ldap:~# cat add8.ldif
dn: cn=config
changetype: modify
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/certs/cert1.pem
root@ldap:~# cat add6.ldif
dn: cn=config
changetype: modify
replace: olcTLSCRLCheck
olcTLSCRLCheck: none
root@ldap:~# cat add5.ldap
dn: cn=config
changetype: modify
add: olcTLSCipherSuite
olcTLSCipherSuite: NORMAL
-
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/certs/fullchain1.pem
root@ldap:~# cat add2.ldap
dn: cn=config
changetype: modify
add: olcTLSProtocolMin
olcTLSProtocolMin: 3.3
root@ldap:~# cat add1.ldap
dn: cn=config
changetype: modify
replace: olcTLSVerifyClient
olcTLSVerifyClient: never
阅读内容:
ldapmodify -Y EXTERNAL -H ldapi:/// -f add1.ldap
去检查:
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config | grep olcTLS