如何解决 PHP 中ldap_start_tls() “无法启动 TLS: 连接错误”?

2022-08-31 00:17:43

我得到:

警告:ldap_start_tls() [function.ldap-start-tls]:无法启动 TLS:连接错误在 /var/www/X.php 行 Y 上

/etc/ldap/ldap.conf:

TLS_CACERT     /etc/ssl/certs/ca.crt

ca.crt是签署 LDAP 服务器证书的 CA。LDAP 服务器上的证书已过期,我无法更改它。


答案 1

您可以通过发出以下命令来忽略窗口中的有效性

putenv('LDAPTLS_REQCERT=never');

在你的 php 代码中。在 *nix 中,您需要编辑要包含的内容/etc/ldap.conf

TLS_REQCERT never

需要注意的另一件事是它需要版本3(版本2是php默认值):

//$hostnameSSL example would be "ldaps://just.example.com:636" , just make sure it has ldaps://
$con = ldap_connect($hostnameSSL);
ldap_set_option($con, LDAP_OPT_PROTOCOL_VERSION, 3);

若要更好地了解正在发生的情况,可以通过以下方式启用调试日志记录:

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);

这可以在发生之前完成。ldap_connect


答案 2

我的解决方案/解决方法是使用

/etc/ldap/ldap.conf:
#TLS_CACERT /etc/ssl/certs/ca.crt
TLS_REQCERT never

如果您有更好的想法,请发布另一个答案。


推荐