我正在编写一个需要与 Active Directory 服务器通信的客户端应用程序,其中一个要求是支持 LDAPS/StartTLS。我已经发现需要设置一个选项:
if (ldap_set_option(pLdap, LDAP_OPT_SERVER_CERTIFICATE, &my_cert_check_func) != LDAP_SUCCESS) {
std::cerr << "ldap set cert check callback failed" <<std::endl;
return NULL;
}
而 my_cert_check_func 过于天真,根本不安全:
static BOOLEAN my_cert_check_func(PLDAP connection, PCCERT_CONTEXT server_cert)
{
return TRUE;
}
而且我也做了很多谷歌搜索并阅读了很多 msdn,但仍然没有任何线索。我以前从未处理过此类与安全相关的编码,因此欢迎任何与证书检查相关的事情。而且因为我使用 Winldap API 编写这个应用程序,所以代码应该使用 Windows 特定的 API。
而且我还在考虑使用 openssl api 进行此类检查(此 api 是我的应用程序的依赖项,因此可以使用它)。
您能否向我展示一些示例代码,用于针对客户端安全存储或客户端拥有的服务器证书进行真实检查?
非常感谢!