我正在使用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之前),但是在检查了有线通讯之后,我看到的效果是客户端正在从服务器请求OCSP状态,这似乎失败(由于未返回OCSP状态,因此TLS握手已中止),但是服务器证书确实包含CDP,我希望客户端使用它通过指定的CRL(而不是通过OCSP)执行吊销检查。
这仅仅是对schannel的限制还是我做错了什么?
谢谢
授予
答案 0 :(得分:0)
找出问题所在。 如上所述设置schannel标志实际上是正确的事情,它确实使Windows LDAP客户端通过CRL执行吊销检查。
但是,我很难验证这一点,因为它一直使用缓存的副本,因此我没有看到通过Wireshark从CDP实际获取CRL。
为解决此问题,我发现可以通过运行certutil.exe命令清除本地CRL缓存:
certutil -setreg链\ ChainCacheResyncFiletime @now
certutil -urlcache *删除
,然后很明显,正在执行CRL验证。 (来自wireshark流量和其他测试……)