可以通过在 php 中设置环境变量来覆盖 ssl ca 文件。
我发现将 ca 证书(和中间 ca)保存到名为 ca.pem 的文件中,然后添加
putenv('LDAPTLS_CACERT=./ca.pem');
在 ldap_connect 之前对我有效。
代码示例
<?php
putenv('LDAPTLS_CACERT=./ca.pem');
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$l = ldap_connect("ldaps://ldap/");
ldap_set_option($l, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($l, "cn=apache,dc=example", "xxxxxxx");
echo(ldap_error($l)."\n");
$s = ldap_search($l, "dc=example", "uid=test");
echo(ldap_count_entries($l, $s)."\n");
?>
在同一目录下的 ca.pem 文件中,我们有我们的 ca
-----BEGIN CERTIFICATE-----
<证书内容>
-----END CERTIFICATE-----