CRLs and AIAs - The Paths to Enlightenment
This past week I've been delving back into configuration of Certificate Authorities - and particularly into the most appropriate URLs for the CDP and AIA extensions in certificates.
In case you're not familiar with these abbreviations:
AIA - Authority Information Access. The URL(s) to a copy of the public certificate for the parent CA. Note that this definition explicitly precludes the root CA from having the AIA extension defined in the certificate.
CDP - CRL Distribution Point. The URL(s) to the CRL which should be retrieved by a client wishing to validate a certificate.
CRL - Certificate Revocation List. The file stored at the CDP describing the list of certificates which are no longer valid, and have been marked so explicitly (as opposed to simply expiring).
The Windows tools provide a number of variables which can be used to dynamically create paths and filenames for the AIA (certificate) and CDP (CRL). However, most engineers I've worked with don't know from the description what the variables even mean, so as much for my memory as for them, here's the list:
Overview | Examples | Recommendations |
---|---|---|
<CAName> CAName is the "CN" portion of the CA's formal X.500 name, with the name encoded in URL syntax. ![]() ![]() |
First Certificate Next Certificate (same key) Next Certificate (new key) Full CRL Delta CRL |
Mixed Recommendation Use in AIA
![]() Use in CDP
![]() |
<CAObjectClass> CAObjectClass is the LDAP object type and descriptive class name for certificate objects, used only in LDAP URLs as the final part of the URL so that the directory service creates the correct object type. ![]() ![]() |
First Certificate Next Certificate (same key) Next Certificate (new key) Full CRL(same key) Delta CRL |
Mixed Recommendation Use in AIA
![]() Use in CDP
![]() |
<CATruncatedName> CATruncatedName is the "CN" portion of the CA's formal X.500 name, without special encoding. ![]() ![]() |
First Certificate Next Certificate (same key) Next Certificate (new key) Full CRL(same key) Delta CRL |
Mixed Recommendation Use in AIA
![]() Use in CDP
![]() |
<CDPObjectClass> CDPObjectClass is the LDAP object type and descriptive class name for CRL objects, used only in LDAP URLs as the final part of the URL so that the directory creates the correct object type. ![]() ![]() |
First Certificate Next Certificate (same key) Next Certificate (new key) Full CRL(same key) Delta CRL |
Mixed Recommendation Use in AIA
![]() paths. Use in CDP
![]() |
<CertificateName> CertificateName is the identification number ("generational" ID) of the certificate, rounded down to the lowest numbered certificate sharing the same keypair. Review the table below for more information. ![]() ![]() |
First Certificate Next Certificate (same key) Next Certificate (new key) Full CRL(same key) Delta CRL |
Generally Recommended Use in AIA
![]() Use in CDP
![]() |
<ConfigurationContainer> ConfigurationContainer is the OU path to the Active Directory domain's Configuration partition. ![]() ![]() |
First Certificate Next Certificate (same key) Next Certificate (new key) Full CRL(same key) Delta CRL |
Mixed Recommendation Use in AIA
![]() Use in CDP
![]() |
<CRLNameSuffix> CRLNameSuffix is the identification number ("generational" ID) of the certificate that matches (signs) the CRL, rounded down to the lowest numbered certificate sharing the same keypair. Review the table below for more information. ![]() ![]() |
First Certificate Next Certificate (same key) Next Certificate (new key) Full CRL(same key) Delta CRL |
Required for CDP Use in AIA
![]() paths. Use in CDP
![]() |
<DeltaCRLAllowed> DeltaCRLAllowed is a tag that distinguishes a full CRL from a delta CRL. ![]() ![]() |
First Certificate Next Certificate (same key) Next Certificate (new key) Full CRL(same key) Delta CRL |
Required for CDP Use in AIA
![]() paths. Use in CDP
![]() |
<ServerDNSName> ServerDNSName is the fully-qualified internal server name (the combination of NetBIOS computer name and primary DNS suffix) of the server. ![]() ![]() |
First Certificate Next Certificate (same key) Next Certificate (new key) Full CRL(same key) Delta CRL |
Mixed Recommendation Use in AIA
![]() Use in CDP
![]() |
<ServerShortName> ServerShortName is the NetBIOS computer name of the server. ![]() ![]() |
First Certificate Next Certificate (same key) Next Certificate (new key) Full CRL(same key) Delta CRL |
Mixed Recommendation Use in AIA
![]() Use in CDP
![]() |
It's all too complex! I still don't get it! Can't you just tell me what I should use for each type of URL?
Well, not really. But the following are good starting points for you to consider. I can't tell you exactly what will, or will not work in your environment - at least, not without looking at your services and servers, and creating a design just for you. If you feel like you need that level of help, drop us a line and we'll see if we can work out an arrangement.
Purpose of URL | Example |
---|---|
AIA - LDAP URL | ldap:///CN=<CATruncatedName>,CN=AIA,CN=Public Key Services,CN=Services,<ConfigurationContainer><CAObjectClass> |
AIA - HTTP URL | http://pkiwebsite.company.com/DescriptiveName<CertificateName>.cer |
AIA - FILE URL | file://pkiwebserver/share$/DescriptiveName<CertificateName>.cer |
CRL - LDAP URL | ldap://CN=<CATruncatedName><CRLNameSuffix>,CN=<ServerShortName>CN=CDP,CN=Public Key Services,CN=Services,<ConfigurationContainer><CDPObjectClass> |
CRL -HTTP URL | http://pkiwebsite.company.com/DescriptiveName<CRLNameSuffix><DeltaCRLAllowed>.crl |
CRL - FILE URL | file://pkiwebserver/share$/DescriptiveName<CRLNameSuffix><DeltaCRLAllowed>.crl |