TLS_REQCERT 和 PHP 与 LDAPS

TLS_REQCERT 和 PHP 与 LDAPS

问题:
通过命令行和 PHP 使用自签名证书向 AD 域控制器进行安全 LDAP 查询。

背景:
我正在开展一个项目,需要启用从 PHP Web 应用程序到使用自签名证书的 MS AD 域控制器的 LDAP 查找。此自签名证书还使用非 FQDN 的域名 - 可以将 people.campus 等视为域名。Web 应用程序将获取用户的凭据并将其传递给 AD 域控制器以验证凭据是否匹配。这看起来很简单,但我在尝试让 PHP 和自签名证书工作时遇到了问题。

有人建议我将 OpenLDAP 配置中的 TLS_REQCERT 变量从“request”更改为“never”。我担心这可能会产生更大的影响,例如中间人攻击,而且我不太愿意将此设置更改为 never。我还在网上读到过一些地方,人们可以获取证书并将其作为 openldap 配置文件中的受信任来源。我很好奇,对于我的情况,我能做些什么吗?我可以从命令行获取 AD 域控制器正在使用的自签名证书,将其保存到文件中,然后让 openldap 使用该文件来获得所需的信任,这样我就不需要将变量从 request 调整为 never 了吗?我无法访问 AD 域控制器,因此无法导出证书。如果有办法从命令行获取证书,我需要使用什么命令?有没有其他方法可以解决这个问题,从长远来看会更好?我有一些 CentOS 服务器和一些 Ubuntu 服务器,我正在尝试使用它们来实现这一点。

提前感谢您的帮助和想法。

答案1

如果您的自签名证书是由您拥有的机构签名的,您可以通过检查服务器证书来检查所提供的证书是否正确。为此,在您的 ldap.conf 中添加行 'TLS_CACERT /etc/ssl/certs/ca.pem',其中 ca.pem 是包含您机构公钥的文件。使用 'TLS_REQCERT hard',它将检查您的连接,如果您的证书服务器不正确,它将拒绝通话。

如果您只有证书,您也许可以(我没有尝试)将您的公钥添加到 TLS_CERT/TLS_CACERT。

相关内容