在 ldap-2.4 中启用 TLS 后无法使用 EXTERNAL 身份验证

use*_*202 5 openldap sasl

我使用以下 LDIF 文件来激活对 LDAP 服务器的 TLS 支持:

dn: cn=config
changetype: modify
add: olcTLSCipherSuite
olcTLSCipherSuite: NORMAL 
-
add: olcTLSCRLCheck
olcTLSCRLCheck: none
-
add: olcTLSVerifyClient
olcTLSVerifyClient: never
-
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/CA.crt
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/server.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/key.pem
Run Code Online (Sandbox Code Playgroud)

并使用以下 LDIF 强制客户端连接使用 TLS:

dn: cn=config
changetype: modify
add: olcSecurity
olcSecurity: tls=1
Run Code Online (Sandbox Code Playgroud)

在此之后,我不能再使用“-Y EXTERNAL”来读取或修改配置架构。例如,如果我运行,我会收到 SASL 错误:

$ sudo ldapsearch -Q -Y EXTERNAL -H ldapi:/// -b "" -LLL -s base -Z supportedSASLMechanisms
ldap_sasl_interactive_bind_s: Authentication method not supported (7)
    additional info: SASL(-4): no mechanism available: 
Run Code Online (Sandbox Code Playgroud)

如果我检查支持的 SASL 机制:

$ sudo ldapsearch -x -H ldapi:/// -b "" -LLL -s base -Z supportedSASLMechanisms
dn:
supportedSASLMechanisms: DIGEST-MD5
supportedSASLMechanisms: CRAM-MD5
supportedSASLMechanisms: NTLM
supportedSASLMechanisms: PLAIN
supportedSASLMechanisms: LOGIN
Run Code Online (Sandbox Code Playgroud)

我真的看不到列表中包含的 EXTERNAL。我在这里缺少什么?

这是在 Ubuntu-12.04 和 slapd-2.4.31 上。

小智 4

如果无法访问正在运行的配置,您将不得不停止slapd并离线编辑配置。

  1. 停止slapdservice slapd stop
  2. 将配置数据库转储到文本文件:slapcat -F /etc/ldap/slapd.d -b cn=config -l config.ldif
  3. 将现有的配置数据库移开:mv /etc/ldap/slapd.d{,.old}
  4. 创建一个新的空配置数据库:

    mkdir /etc/ldap/slapd.d chown --reference=/etc/ldap/slapd.d.old /etc/ldap/slapd.d chmod --reference=/etc/ldap/slapd.d.old /etc/ldap/slapd.d

  5. 编辑转储config.ldif以删除您的olcSecurity设置(或添加olcRootDN和,或您喜欢olcRootPWcn=config任何其他更改)
  6. 将编辑后的 ​​LDIF 加载到新的空数据库中:slapadd -F /etc/ldap/slapd.d -b cn=config -l config.ldif

(以上假设您的配置位于/etc/ldap/slapd.d,这是 Debian 和 Ubuntu 中的默认配置。)

请注意,slapadd完整的 LDIF 应始终在空数据库中完成;因此,如果您犯了错误并slapadd失败了,请确保在重试之前清除部分数据库。

您可以在《OpenLDAP 管理指南》以及相关手册页中找到更多信息。