若要覆寫 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 憑證
-----BEGIN CERTIFICATE-----
<cert here>
-----END CERTIFICATE-----