我正在编写一个需要与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是我的应用程序的依赖项,因此可以使用它。)
您能否向我展示一些示例代码,用于针对客户端安全存储或客户端拥有的服务器证书进行实际检查?
非常感谢!
答案 0 :(得分:0)
您无需验证整个证书链等的有效性。 LDAPS应该已经这样做了。您只需要根据您与该服务器通信时的想法来检查证书的subjectDN。