c - Windows LDAP API : No connection over SSL

标签 c windows ssl ldap

我正在尝试使用 Windows LDAP C-API 通过 SSL 连接到 LDAP 目录。这将失败,错误代码为 0x51 = LDAP_SERVER_DOWN,而客户端计算机上的事件日志具有以下内容: „从远程服务器收到的证书不包含预期的名称。因此无法确定我们是否连接到正确的服务器。我们期望的服务器名称是 eim-tsi2.sam.develop.beta.ads。 SSL 连接请求失败。附加数据包含服务器证书。”

这不可能是真的,因为“Ldap Admin”能够通过 SSL 和端口 636 进行连接。

LDAP 目录是一个 Oracle DSEE,它在适当的证书库中有 CA 和服务器证书。 客户端在“受信任的根证书颁发机构”和“本地计算机”实体店中安装了 CA。我认为这是 CA 的正确位置,因为我的小客户端程序使用 Windows LDAP C-API; LDAP 管理员确实希望那里有 CA。

这是我的程序的摘录,省略了错误处理和其他明显的源代码:

   ld = ldap_sslinit(host, LDAP_SSL_PORT, 1);
   // Set options: LDAP version, timeout ...
   rc = ldap_set_option(ld, LDAP_OPT_SSL, LDAP_OPT_ON);
   // Now connect:
   rc = ldap_connect(ld, NULL);

结果: 0x51 = LDAP_SERVER_DOWN

没有 SSL 的连接成功,因此 LDAP 服务器通常可以访问。

由于 Ldap Admin 能够通过 SSL 进行连接,我假设证书有效且位于正确的位置。但显然 LDAP API 在其他地方期望它们并且无法从服务器获取服务器证书。我按照此处所述配置了证书:https://msdn.microsoft.com/en-us/library/aa366105%28v=vs.85%29.aspx

我做错了什么?

最佳答案

有时它有助于更​​仔细地阅读错误消息。由于 SSL 绑定(bind)失败导致事件查看器中的条目是“我们期望的服务器名称是 eim-tsi2.sam.develop.beta.ads。”

我应该注意到名称应该是 eim-tsi2.cgn.de.(等),而不是。所以域名部分是错误的。

这是 Schannel 中的一个错误,可以通过注册表中的条目解决,如下所述:https://support.microsoft.com/en-us/kb/2275950 .

我仍然不知道为什么 LDAPAdmin 能够在没有附加注册表项的情况下进行连接,尽管它也使用 WINLDAP API,因此应该会遇到同样的错误。但这不再重要了。

谢谢安德鲁的帮助。

关于c - Windows LDAP API : No connection over SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37438566/

相关文章:

c - C中位域的内存管理

c - wdk 8.1 kmdf驱动蓝屏

python - 在 Windows 上使用 Python 将 SVG 转换为 PNG

asp.net - 导出为 PDF 到本地文件夹

spring - Camel Spring EMS SSL 不工作

ssl - ERR_SSL_VERSION_OR_CIPHER_MISMATCH 从 AWS API 网关到 Lambda

c - C 程序中设置的预处理器指令值

c - 从 .txt 文件读取并将其保存在数组中。fscanf 出现问题

windows - Perl:当 child 被杀死时,子进程不会被杀死

ssl - Domino XPages : Import PKCS12-SSL-Certificate into ID from ID-Vault