0

我正在使用 Windows LDAP 客户端 DLL (wldap32.dll) 连接到远程 LDAP 服务器。连接通过 TLS(端口 636 上的 LDAPS 协议)完成。

我的问题是启用 CRL 撤销。我发现可以使用以下方法为 LDAP 会话设置 schannel 选项:

ldap_set_option(LDAP_OPT_SCH_FLAGS, &uLong);

所以我尝试将 SCH_CRED_REVOCATION_CHECK_CHAIN 选项传递给上述调用(当然是在 ldap_bind_s 之前),但是在检查了 wireshark 流量之后,我看到效果是客户端正在从服务器请求 OCSP 状态,这似乎失败了( TLS 握手被中止,因为没有返回 OCSP 状态)但是,服务器证书确实包含 CDP,我希望客户端使用它通过指定的 CRL 执行吊销检查,而不是通过 OCSP。

这只是 schannel 的限制还是我做错了什么?

谢谢

阿米特

4

1 回答 1

0

发现了问题。如上所述设置 schannel 标志实际上是正确的做法,它确实使 Windows LDAP 客户端通过 CRL 执行吊销检查。

但是,我很难验证这一点,因为它一直使用缓存副本,所以我没有通过wireshark看到CRL实际上是从CDP中获取的。

为了解决这个问题,我发现我可以通过运行 certutil.exe 命令来清除本地 CRL 缓存:

certutil -setreg 链\ChainCacheResyncFiletime @now

certutil -urlcache * 删除

然后很明显正在执行 CRL 验证。(都来自wireshark流量和其他测试......)

于 2018-08-10T12:10:02.200 回答