Configure AIA and CDP Extensions
This step must be performed on the CA server.
- The AIA / OCSP URL must point to the OCSP server, where the Online Responder is installed.
- The CDP / CRL URL must point to the server that hosts the CRL via IIS:
- Standalone CA — the OCSP server (CRL files are copied there manually).
- Enterprise CA — the CA server (the CA publishes and serves its own CRL).
Open the Certification Authority console by running the following command in an elevated
command prompt:
Command Prompt
In the Select extension dropdown, select CRL Distribution Point (CDP).Select [ Add ] and enter the CDP URL in the following format:Select [ OK ].In the list of CDP locations, select the URL you just added and check the following boxes:
http://<CRL-host-FQDN-or-IP>/CertEnroll/<CaName><CRLNameSuffix><DeltaCRLAllowed>.crlReplace the following:<CRL-host-FQDN-or-IP>— the host that serves the CRL via IIS:- Standalone CA — the OCSP server.
- Enterprise CA — the CA server.
<CaName>— the name of your CA (e.g.,Futurex-CA).
Leave
<CRLNameSuffix> and <DeltaCRLAllowed> exactly as shown — these are CA variables
that Windows automatically substitutes with the correct values when publishing the CRL.- Include in CRLs. Clients use this to find Delta CRL locations.
- Include in the CDP extension of issued certificates.
In the Select extension dropdown, select Authority Information Access (AIA).Select [ Add ] and enter the OCSP URL in the following format:
http://<OCSP-server-FQDN-or-IP>/ocspReplace <OCSP-server-FQDN-or-IP> with the fully qualified domain name or IP address of
your OCSP server. Select [ OK ].In the list of AIA locations, select the URL you just added and check Include in the
online certificate status protocol (OCSP) extension.Publish the CRL
Publishing the CRL makes it available for the OCSP server to download and use for revocation
checking.
Serve the CRL via IIS (Enterprise CA)
Enterprise CA only. Skip this section if you are using a Standalone CA — the CRL is served
from the OCSP server’s
CertEnroll directory instead (see Configure Online Responder, Step 2).CertEnroll directory.
On the CA server, open IIS Manager (run
start inetmgr from a command prompt, or open
it via Server Manager > Tools > Internet Information Services (IIS) Manager).In the left pane, expand the server node > Sites > Default Web Site. Right-click
Default Web Site and select Add Virtual Directory.
Set the following and select [ OK ]:
- Alias:
CertEnroll - Physical path:
C:\Windows\System32\CertSrv\CertEnroll
Enable double-escaping on the CertEnroll virtual directory so the delta CRL can be served.Run one of the following on the CA server in an elevated prompt.Option 1 — scoped to CertEnroll (recommended), Option 2 — scoped to CertEnroll, PowerShell equivalent:Option 3 — whole Default Web Site (fallback if the scoped path does not apply cleanly):
Why this is required. The delta CRL filename contains a plus sign
(
<CaName>+.crl, e.g. Futurex-CA+.crl). By default, IIS request filtering blocks URLs
containing the + character (it treats them as double-escaped) and returns
HTTP 404.11 (URL_DOUBLE_ESCAPED). The base CRL (Futurex-CA.crl) is unaffected and
serves normally, so this only surfaces when a client tries to fetch the delta CRL.Because the base CRL is checked first, OCSP verification can succeed even while the delta
CRL 404s — but in a longer-running environment where certificates are revoked between base
CRL publishes, clients need the delta. Apply this fix so delta CRL retrieval works.Microsoft’s guidance is to scope this change to the CRL-hosting site or virtual directory
only, not server-wide. The scoped command below targets just CertEnroll.appcmd:You can also set this in the GUI: in IIS Manager, select the CertEnroll virtual
directory, open Request Filtering > Edit Feature Settings, and check Allow
double escaping. Then run
iisreset.Verify both the base CRL and the delta CRL are reachable over HTTP. From the OCSP server (or
any other VM), run:
Both requests should show
StatusCode : 200 and Content-Type: application/pkix-crl. If
the base CRL returns 200 but the delta (+.crl) returns 404, the double-escaping change
did not take effect — re-check which site/virtual directory you applied it to, confirm you
ran iisreset, and try the broader Option 3 if you used a scoped option.Enable OCSP No-Check Flag
Standalone CA only. Skip this step if you are using an Enterprise CA. This flag allows the
CA to issue OCSP signing certificates that are not themselves checked for revocation — which
is required since the OCSP responder cannot check its own signing certificate’s revocation
status. Enterprise CA handles this automatically via the certificate template (the template
includes the OCSP No-Check extension).
Open an elevated command prompt and run the following command:
The output should show the old and new values of the flag, confirming it was set
successfully. For example:
Create and Publish the OCSP Response Signing Template
Enterprise CA only. Skip this section if you are using a Standalone CA. Standalone CA uses
an INF file and
certreq for OCSP signing certificate enrollment instead of an AD certificate
template.In the list of templates, locate OCSP Response Signing, right-click it, and select
Duplicate Template.
Configure the new template across the following tabs:General tabSubject Name tabSecurity tab
- Set Template display name to
OCSP Response Signing HSM.
- Set Purpose to
Signature. - Leave Allow private key to be exported unchecked — the private key will remain protected inside the HSM.
- Set Provider Category to
Key Storage Provider. - RSA: set Algorithm name to
RSAand Minimum key size to2048. - ECC: set Algorithm name to
ECDSA_P384(or the curve matching your INF) and Minimum key size to384. - Select Requests can use any provider available on the subject’s computer.
The template’s algorithm must match the INF you used in Step 4 — an ECDSA template will not
issue against an RSA request, and vice versa. The Request Hash on this tab can be left at
the default; pair it sensibly with the curve (SHA384 for P-384) if you set it explicitly.
The Futurex CNG KSP is specified at enrollment time on the OCSP server via the INF file.
The template only needs to allow KSP providers generally. Even if
certutil -csplist
shows the Futurex provider as installed, it may not appear in the template’s explicit
provider list — selecting “any provider” avoids this and is the correct choice here.- Select Build from this Active Directory information.
- Set Subject name format to Common name.
- Under Include this information in alternate subject name, check DNS name.
This is the production-correct configuration. The CA populates the subject and the DNS
Subject Alternative Name from the enrolling machine’s trusted Active Directory computer
object, rather than trusting a name supplied in the request. Because of this, the request
must be submitted by the machine account (SYSTEM) — see Step 6, Enterprise CA. A
request submitted by a normal user account will be denied with
CERTSRV_E_SUBJECT_DNS_REQUIRED, because user objects do not have a dNSHostName
attribute.- Confirm Authenticated Users has Read and Enroll permissions checked.
- Click Application Policies > Edit and confirm OCSP Signing
(
1.3.6.1.5.5.7.3.9) is listed.
Publish the template so the CA will issue certificates from it. In
certsrv.msc, expand
your CA name, right-click Certificate Templates > New > Certificate Template to
Issue.Select OCSP Response Signing HSM from the list and click OK.OCSP Response Signing HSM should now appear in the Certificate Templates list in the
Certification Authority console.
