CRL 多久刷新一次?如何强制刷新?

CRL 多久刷新一次?如何强制刷新?

我有一个在 IIS 7 下运行的 Web 服务,需要 X509 客户端证书。我知道它运行的服务器需要访问 DigiCert.com 才能获取 CRL(证书吊销列表)。

需要更改我们的代理,因此我试图调查这样做的影响。我已使用命令删除了全局代理设置netsh winhttp proxy refesh,还使用命令删除了 CRL 缓存certutil -URLcache CRL delete

但是,执行此操作后,对 Web 服务的所有调用仍然成功。这表明我这里遗漏了一些东西。

所以;如果 CRL 缓存被清除,并且服务器无法刷新 CRL,为什么 Web 服务请求不会返回 http 403?

我无法通过谷歌搜索或从同事那里找到足够的信息。

我希望它失败的原因是,除非我先看到它被破坏,否则我不会确信新的代理设置能够正常工作,如果这有意义的话。

我还希望能够强制刷新 CRL,以确保新的代理设置有效

答案1

我可能搞错了,但如果服务器无法检查 CRL,就无法“撤销”证书。因此它将继续工作。CRL 不是“允许”列表,而是“拒绝”列表。

答案2

如果无法访问 CRL,IIS 默认返回 403.13。

来源

默认情况下,只要本地缓存过期,IIS 每次收到客户端证书时都会检索 CRL,以确保证书不会被吊销。为此,它会联系 CA 以获取 CRL(已吊销证书的列表),并将该列表与提供的客户端证书进行比较。如果出于任何原因无法检索 CRL,它将继续并抛出错误消息 403.13,即使证书有效且未被吊销。在某些代理/防火墙可能阻止访问 CDP 以获取 CRL 的情况下,可能会发生这种情况。

我们都知道 403,但是 403.13 对于我们中的一些人来说可能是新的,我在今年开始之前当然不知道子状态代码!

403.13 HTTP 403.13 禁止访问:客户端证书已吊销该页面需要有效的客户端证书

要了解此错误消息,请查看 KB 248058。

此错误消息意味着客户端发送了一个证书,但是该证书在颁发机构的证书吊销列表中显示为已被吊销,或者服务器无法从颁发机构检索 CRL。

我们可以在较新版本的 IIS 上使用 netsh 命令来控制 IIS 的行为,在certutil较旧版本的 IIS 上使用命令来控制。对于如何处理证书吊销列表请求,我们有四种选择。

如果 CertCheckMode 设置为 0,IIS 将根据服务器上缓存的 CRL 进行 CRL 验证(基于其属性,如当前日期和“下次更新”字段)。如果当前日期在“生效日期”和“下次更新”字段范围内,它将使用本地 CRL 缓存。如果当前日期超出“下次更新”字段,它将尝试从远程位置下载 CRL 并使用它。

如果将 CertCheckMode 设置为 1,则不执行证书吊销检查。

如果 CertCheckMode 设置为 2,证书吊销验证将基于 IIS 服务器上缓存的 CRL 进行。即使 CRL 已过期,IIS 也不会尝试连接到远程服务器下载 CRL,在这种情况下 CRL 验证显然会失败。

如果将 CertCheckMode 设置为 4,则将通过下载远程 CRL 进行证书撤销验证,即使我们在服务器上拥有有效的缓存 CRL。它会完全忽略缓存的 CRL。

https://learn.microsoft.com/en-us/answers/questions/897708/http-error-403-13-forbidden

https://techcommunity.microsoft.com/t5/iis-support-blog/client-certificate-revisited-how-to-troubleshoot-client/ba-p/348053

相关内容