Windows LDAP 客户端 - 通过 CRL 启用吊销
Windows LDAP client - enabling revocation via CRL
我正在使用 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 的限制还是我做错了什么?
谢谢
阿米特
发现问题。
如上所述设置 schannel 标志实际上是正确的做法,它确实使 Windows LDAP 客户端通过 CRL 执行吊销检查。
但是,我很难验证这一点,因为它一直在使用缓存副本,所以我没有通过 wireshark 看到 CRL 实际上是从 CDP 中获取的。
为了解决这个问题,我发现我可以通过 运行 certutil.exe 命令清除本地 CRL 缓存:
certutil -setreg chain\ChainCacheResyncFiletime @now
certutil -urlcache * 删除
然后很明显正在进行CRL验证。 (来自 wireshark 流量和其他测试...)
我正在使用 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 的限制还是我做错了什么?
谢谢
阿米特
发现问题。 如上所述设置 schannel 标志实际上是正确的做法,它确实使 Windows LDAP 客户端通过 CRL 执行吊销检查。
但是,我很难验证这一点,因为它一直在使用缓存副本,所以我没有通过 wireshark 看到 CRL 实际上是从 CDP 中获取的。
为了解决这个问题,我发现我可以通过 运行 certutil.exe 命令清除本地 CRL 缓存:
certutil -setreg chain\ChainCacheResyncFiletime @now
certutil -urlcache * 删除
然后很明显正在进行CRL验证。 (来自 wireshark 流量和其他测试...)