![当复制已运行时,如何在 OpenLDAP 上启用 TLS](https://linux22.com/image/715298/%E5%BD%93%E5%A4%8D%E5%88%B6%E5%B7%B2%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%9C%A8%20OpenLDAP%20%E4%B8%8A%E5%90%AF%E7%94%A8%20TLS.png)
我按照以下步骤在两台主机之间设置复制这很棒的手册。复制运行良好 - 已经几个月了。
现在我也想启用 TLS(复制不需要 TLS)。
由于主机装有 Ubuntu Linux,因此我遵循这指南创建自签名 SSL 证书,现在卡在修改服务器配置的步骤上。这是我的 LDIF 文件:
$ cat tls.ldif
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ldap_slapd_cacert.pem
dn: cn=config
changetype: modify
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap_slapd_key.pem
dn: cn=config
changetype: modify
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap_slapd_cert.pem
导入命令失败:
$ ldapmodify -H ldapi:// -Y EXTERNAL -f ~/tls.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: Server is unwilling to perform (53)
使用 IP 地址、TCP 端口和凭证的组合不会产生任何不同。
OLC 镜像模式开启:
$ slapcat -n 0
[ -cut- ]
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by
dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth manage by * break
structuralObjectClass: olcDatabaseConfig
entryUUID: c7822d8e-30c4-1037-8e8b-4fac89b22db9
createTimestamp: 20170918135531Z
olcRootDN: cn=admin,cn=config
refreshAndPersist retry="5 5 300 5" timeout=1
olcMirrorMode: TRUE
[ -cut- ]
这里有什么问题?
答案1
尝试将您的 LDIF 文件修改为如下所示:
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ldap_slapd_cacert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap_slapd_key.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap_slapd_cert.pem
这意味着您的三项添加将被视为一项更改,而不是三项单独的更改。OpenLDAP 可能比较挑剔,因为它只会孤立地查看每项更改。
答案2
回到开始,删除证书、密钥和信息文件,然后所有内容都是新的。
有效。
显然,我之前做错了什么。虽然 SSL 证书和密钥看起来没问题,但实际上却有问题。更令人惊讶的是:插入这三个值不仅仅是愚蠢的插入值,它们显然在设置时就已验证。