要覆盖 ssl ca 文件,可以在 php 中设置一个环境变量。
我发现将 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.pem 文件中,我们有我们的 ca
-----BEGIN CERTIFICATE-----
<cert here>
-----END CERTIFICATE-----