How to disable certificate revocation list (CRL) caching on IIS 10.0?

2.3k Views Asked by At

Background

Hello, community! I am trying to disable CRL caching on IIS 10.0 in order to be able to fetch updated version of CRL each time I make a request to my website. It is required for development purposes: I revoke or un-revoke client certificate, publish latest CRL on my CA and want IIS to check the latest information.

Question

What settings should I change in order to disable CRL caching on IIS 10.0? I want IIS to download CRL each time I make a request to it.

Setup

What I completed as a setup step:

  1. Set "Accept" for client certificates on IIS.
  2. Checked following material about IIS CRL settings: link.

Actions

What I am trying to do to disable CRL caching on IIS:

  1. Delete existing SSL binding for my website: netsh http delete sslcert ipport=0.0.0.0:3010.
  2. Add binding which tells IIS to download CRL each 10 seconds and not to cache it: netsh http add sslcert ipport=0.0.0.0:3010 certhash=SOME_VALUE appid={SOME_VALUE} certstorename=My verifyclientcertrevocation=enable revocationfreshnesstime=10 urlretrievaltimeout=30000. Parameters mean that we enable CRL checking, refresh CRL each 10 seconds and set HTTP timeout for CRL download to 30 seconds (30000 milliseconds).
  3. Verify that the information has been updated.

Registry settings

SSL binding settings

If CertCheckMode is set to 4, certificate revocation verification will be done by downloading the remote CRL, even if we have the valid cached CRL on the server. It ignores the cached CRL completely.

  1. Restart IIS or reboot the machine: iisreset.
  2. Clear CRL cache: certutil -urlcache crl delete.
  3. Publish new CRL and verify that it doesn't contain our certificate.

Publishing updated CRL

  1. Send not revoked certificate: 403 status has been returned by IIS. This means that IIS uses cached CRL and above-mentioned settings for IIS doesn't work.

Non-revoked certificate

Certificate in Postman

Forbidden result

  1. If I disable CRL checking it works: verifyclientcertrevocation=disable.
  2. CRL is reachable.

CRL status

0

There are 0 best solutions below