0

我正在编写一个需要与 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 是我的应用程序的依赖项,因此可以使用它)。

您能否向我展示一些示例代码,用于针对客户端安全存储或客户端拥有的服务器证书进行真实检查?

非常感谢!

4

1 回答 1

0

您无需验证整个证书链等的有效性。LDAPS 应该已经这样做了。您只需要检查证书的 subjectDN 与您在与该服务器交谈时认为应该是什么。

于 2014-08-05T03:38:43.917 回答