我的最终目标是使用 sssd 和 Google LDAPS,但可以判断 ldapsearch 是否可行。Google LDAPS 需要服务器名称指示 (SNI) 扩展。我已在 Ubuntu 20.04 上通过变通方法使其运行。openldap 维护者指出ldapsearch 可以与 GnuTLS 密码套件“NORMAL:!VERS-TLS1.3”一起使用,强制 TLS1.2 执行 SNI。
LDAPTLS_CIPHER_SUITE='NORMAL:!VERS-TLS1.3' ./clients/tools/ldapsearch -H ldaps://ldap.google.com -x
维护者没有注意到在 CentOS 8 等平台上使用 openssl 编译的 ldapsearch 的解决方法。因此,作为测试,我在 CentOS 8 上使用 --with-tls=gnutls 编译了 openldap 2.4.53,以查看在 CentOS 8 上使用 GnuTLS 编译的 openldap 的替代品是否会接受密码来阻止 TLS1.3 并提供必要的 SNI。这不起作用(尽管该密码似乎是可以接受的,因为它不会产生错误),Google LDAPS 仍然没有获得其 SNI,因此发回了无效证书。因此我陷入了困境。
CentOS 8(openldap[-clients]-2.4.46-10)和 Ubuntu 20.04(libldap-2.4-2 和 ldap-utils 2.4.49+dfsg-2ubuntu1.3)
有人知道如何让 CentOS 8 上的 openldap(用 openssl 编译)发送 SNI 以便它可以与 Google LDAPS 一起使用吗?
答案1
在与 Ubuntu 20.04 进行更多比较后,我发现需要添加
TLS_CACERT /etc/ssl/certs/ca-bundle.crt
到我的 2.4.53 版本链接到 gnutls 的 ldap.conf。因此,我可以尝试用 gnutls 链接版本替换 openldap,然后重新测试 sssd(希望它不需要重建)。sssd 有 ldap_tls_cipher_suite 来过滤 gnutls 密码。但我注意到 ldapsearch 没有从 2.4.53 安装的 ldap.conf 中获取 TLS_CIPHER_SUITE。