docs/documentation/platform/pki/ca/crl-distribution.mdx
Every certificate issued by an internal CA embeds a CRL Distribution Point (CDP) extension that tells validators where to fetch the revocation list. You can register additional mirror URLs at the CA level so validators have fallback locations if the primary endpoint is unreachable.
<Info> This page is for product admins managing PKI infrastructure. CRL configuration is an advanced topic — most users don't need to configure custom mirrors. </Info>http:// or https://.<Steps>
<Step title="Navigate to CA details">
Go to **Certificate Manager → Certificate Authorities → Internal** and select your CA.
</Step>
<Step title="Edit CRL Distribution Points">
Click the pencil icon on the **CRL Distribution Points** card.
</Step>
<Step title="Add mirror URLs">
Add one URL per row, in order of preference (clients try them in the listed order).
</Step>
</Steps>
### Create CA with CRL mirrors
```bash
curl --location --request POST 'https://app.infisical.com/api/v1/cert-manager/ca/internal' \
--header 'Authorization: Bearer <access-token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "my-internal-ca",
"configuration": {
"type": "root",
"commonName": "My Root CA",
"keyAlgorithm": "RSA_2048",
"crlDistributionPointUrls": [
"https://crl.example.com/internal-ca.crl",
"https://backup-crl.example.com/internal-ca.crl"
]
}
}'
```
### Update existing CA
```bash
curl --location --request PATCH 'https://app.infisical.com/api/v1/cert-manager/ca/internal/<ca-id>' \
--header 'Authorization: Bearer <access-token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"configuration": {
"crlDistributionPointUrls": [
"https://crl.example.com/internal-ca.crl"
]
}
}'
```
Infisical regenerates each CA's CRL automatically — CRLs are rebuilt whenever a certificate is revoked or the existing CRL is approaching its nextUpdate time. To keep your mirrors useful, pull the latest CRL on a schedule and republish it at each mirror URL.
curl --location --request GET 'https://app.infisical.com/api/v1/cert-manager/ca/internal/<ca-id>/crls' \
--header 'Authorization: Bearer <access-token>'
The response contains the PEM-encoded CRL. Write it to your mirror destination using your preferred sync method.
<Note> Run this on a cron schedule that's well within the CRL validity window — every few hours is a reasonable default — so mirrors never serve a stale or expired CRL to validators. </Note>#!/bin/bash
# Fetch CRL and upload to S3
CRL=$(curl -s -H "Authorization: Bearer $TOKEN" \
"https://app.infisical.com/api/v1/cert-manager/ca/internal/$CA_ID/crls")
echo "$CRL" | aws s3 cp - s3://my-bucket/crl/internal-ca.crl \
--content-type "application/pkix-crl"