Certificate Revocation Monitoring
Monitor certificate revocation status to detect revoked certificates, offline revocation services, and expired Certificate Revocation Lists (CRLs) to ensure certificate trust validation remains current and secure.
Phase 3 Feature - Enhanced chain validation includes revocation checking via CRL and OCSP protocols.
For configuration options, see Certificate Configuration - Revocation Monitoring.
Overview
Revocation monitoring validates that certificates have not been revoked by their issuing Certificate Authority, protecting against:
- Revoked Certificates - Certificates compromised or no longer trusted
- Unknown Revocation Status - Unable to verify revocation (CRL/OCSP unavailable)
- Offline Revocation Services - Network or service connectivity issues
- Expired CRLs - Stale revocation information requiring update
- Revocation Timeouts - Slow or unresponsive revocation services
What Is Certificate Revocation?
Certificate revocation is the process of invalidating a certificate before its expiration date. Certificates are revoked when:
- Private Key Compromised - Certificate's private key has been stolen or exposed
- CA Compromise - Issuing CA has been compromised or no longer trusted
- Certificate Superseded - Certificate replaced (renewal, rekey, or configuration change)
- Cessation of Operation - Service or organization no longer operates
- Affiliation Changed - Certificate holder's organizational affiliation changed
- Certificate Misuse - Certificate used for unauthorized purposes
Revocation Checking Methods
| Method | Protocol | Performance | Reliability | Best For |
|---|---|---|---|---|
| CRL (Certificate Revocation List) | HTTP | Slower (downloads entire list) | High availability | Legacy systems, offline validation |
| OCSP (Online Certificate Status Protocol) | HTTP | Faster (single cert query) | Real-time status | Modern systems, online validation |
Windows Behavior: Windows certificate validation checks both CRL and OCSP endpoints if available, preferring OCSP for better performance.
Revocation Monitoring Features
Phase 3 (Current Implementation)
Certificate revocation checking is integrated with chain validation and detects three critical revocation states:
| Detection | Severity | Description |
|---|---|---|
| Revoked | ❌ ERROR | Certificate has been revoked by issuing CA |
| RevocationStatusUnknown | ⚠️ WARNING | Cannot determine revocation status (CRL/OCSP unavailable) |
| OfflineRevocation | ⚠️ WARNING | Revocation service is offline or unreachable |
Per-Certificate Override: SkipRevocationCheck
Individual certificates can be configured to skip revocation checking:
Use Cases:
- Self-signed certificates (no revocation infrastructure)
- Internal CA certificates (offline revocation services by design)
- Development/testing certificates
- Certificates with known unavailable CRL/OCSP endpoints
Configuration: Set SkipRevocationCheck = true on individual certificate resources in Nodinite
Impact: Certificate will not generate RevocationStatusUnknown or OfflineRevocation warnings, but still detects Revoked status if revocation data is available.
Phase 10 Enhancements (Planned)
Advanced revocation monitoring capabilities planned for future release:
| Enhancement | Capability | Benefit |
|---|---|---|
| CRL Freshness | Display CRL issue date, next update time, age | Detect stale CRL data requiring refresh |
| Expired CRL Detection | Alert when CRL has passed "Next Update" time | Ensure revocation data remains current |
| OCSP Responder Health | Monitor OCSP endpoint availability and latency | Detect revocation service degradation |
| Response Time Tracking | Measure CRL/OCSP response times | Identify performance issues |
| Timeout Configuration | Configurable timeout thresholds for revocation checks | Prevent hanging on slow services |
| Disabled Revocation Warning | Alert when revocation checking is disabled globally | Security compliance validation |
| Revocation Cache Visibility | Display cached revocation status and freshness | Transparency into Windows revocation cache |
Revocation Error States
Revoked (ERROR)
Description: Certificate has been explicitly revoked by the issuing Certificate Authority.
Severity: ❌ ERROR - Certificate is no longer trusted
Common Causes:
- Private key compromised or suspected compromise
- Certificate replaced (superseded) before expiration
- Certificate issued incorrectly or fraudulently
- Organization requested revocation
Detection Method:
- Windows certificate validation queries CRL/OCSP
- CA publishes revocation status in CRL or OCSP responder
- Revocation status propagated through Windows certificate cache
Recommended Actions:
- Immediate Replacement: Replace revoked certificate immediately
- Investigate Cause: Determine why certificate was revoked
- Review Security: If compromise suspected, audit for unauthorized access
- Update Applications: Ensure all applications use replacement certificate
- Remove Revoked Certificate: Delete from certificate stores after replacement
Example Display:
Certificate State: ❌ ERROR
Chain Validation: FAILED
Revocation Status: ❌ Revoked
Certificate has been revoked by issuing CA
Revocation Date: 2025-11-10 08:30:00 UTC
Revocation Reason: Superseded
Priority Actions:
1. Replace certificate immediately
2. Verify replacement certificate installed correctly
3. Update IIS bindings, application configurations
4. Remove revoked certificate from stores
RevocationStatusUnknown (WARNING)
Description: Windows cannot determine whether the certificate has been revoked because CRL or OCSP services are unavailable.
Severity: ⚠️ WARNING - Revocation status cannot be verified
Common Causes:
- CRL distribution point URL unreachable (network issue)
- OCSP responder endpoint offline or slow
- Firewall blocking outbound HTTP/HTTPS to revocation services
- Certificate lacks CRL/OCSP extension (no revocation infrastructure)
- Proxy configuration preventing revocation checks
Detection Method:
- Windows attempts CRL download or OCSP query
- Both methods fail or timeout
- Certificate validation continues with unknown revocation status
Recommended Actions:
- Check Network Connectivity: Verify outbound HTTP/HTTPS access
- Test CRL URL: Manually download CRL from distribution point
- Test OCSP Responder: Query OCSP endpoint with
certutil -url - Review Firewall Rules: Ensure revocation endpoints not blocked
- Verify Proxy Settings: Check Windows proxy configuration
- Consider Override: Set
SkipRevocationCheck=trueif revocation unavailable by design
Example Display:
Certificate State: ⚠️ WARNING
Chain Validation: PASSED (with warnings)
Revocation Status: ❓ Unknown
Cannot determine revocation status
CRL URL: http://crl.example.com/ca.crl (unreachable)
OCSP URL: http://ocsp.example.com (unreachable)
Troubleshooting Steps:
1. Test CRL download: curl http://crl.example.com/ca.crl
2. Test OCSP query: certutil -url "certificate.cer"
3. Check firewall rules for outbound HTTP/HTTPS
4. If revocation checking not required, set SkipRevocationCheck=true
OfflineRevocation (WARNING)
Description: Revocation service (CRL or OCSP) is temporarily offline or experiencing connectivity issues.
Severity: ⚠️ WARNING - Revocation service unavailable
Common Causes:
- CRL distribution point server down or unreachable
- OCSP responder service outage
- Network connectivity issue between server and revocation service
- DNS resolution failure for revocation endpoints
- Revocation service undergoing maintenance
Difference from RevocationStatusUnknown:
- OfflineRevocation: Service exists but is temporarily unreachable (transient issue)
- RevocationStatusUnknown: Cannot determine status for any reason (may be permanent)
Recommended Actions:
- Check Service Status: Verify CRL/OCSP endpoint availability
- Test from Different Location: Confirm issue is not local network
- Review DNS Resolution: Ensure revocation endpoint resolves correctly
- Contact CA: Report service outage to Certificate Authority
- Monitor for Recovery: Check if issue resolves automatically
- Temporary Override: Consider
SkipRevocationCheck=trueduring outage
Example Display:
Certificate State: ⚠️ WARNING
Chain Validation: PASSED (with warnings)
Revocation Status: 🔌 Offline
Revocation service is offline
CRL URL: http://crl.example.com/ca.crl (HTTP 503 Service Unavailable)
OCSP URL: http://ocsp.example.com (Connection timeout)
Last Successful Check: 2025-11-15 14:22:00 UTC
Troubleshooting Steps:
1. Verify endpoint availability: curl -I http://crl.example.com/ca.crl
2. Check DNS resolution: nslookup crl.example.com
3. Test from external network to isolate issue
4. Contact CA support if service outage persists
Configuration
Global Revocation Settings
Configure revocation checking behavior for all certificates:
| Setting | Default | Description |
|---|---|---|
| ValidateRevocation | true |
Enable/disable global revocation checking (CRL/OCSP) |
| AllowUnknownRevocationStatus | true |
Continue validation when revocation status cannot be determined |
| RevocationTimeoutSeconds | 15 |
⏱️ Phase 10 - Timeout for CRL/OCSP queries (seconds) |
| AlertOnDisabledRevocation | false |
⏱️ Phase 10 - Warn when revocation checking is globally disabled |
Per-Certificate Overrides
Configure individual certificates to skip revocation checking:
| Setting | Default | Description |
|---|---|---|
| SkipRevocationCheck | false |
Skip revocation checking for this specific certificate |
When to Use SkipRevocationCheck:
- ✅ Self-signed certificates (no revocation infrastructure)
- ✅ Internal CA with offline CRL/OCSP (by design)
- ✅ Development/testing certificates
- ✅ Certificates with known unavailable endpoints
- ❌ Production certificates from public CAs (should always check)
Phase 10 Configuration (Planned)
Advanced revocation monitoring settings planned for future release:
| Setting | Default | Description |
|---|---|---|
| EnableCRLFreshnessCheck | true |
Alert when CRL is stale or expired |
| CRLMaxAgeDays | 7 |
Maximum CRL age before warning |
| EnableOCSPHealthMonitoring | true |
Monitor OCSP responder availability and latency |
| OCSPResponseTimeThresholdMs | 2000 |
Warning threshold for OCSP response time |
| DisplayCRLDetails | true |
Show CRL issue date, next update, validity period |
| DisplayOCSPResponderInfo | true |
Show OCSP responder URL, response time, health |
| AlertOnExpiredCRL | true |
Generate ERROR when CRL has passed "Next Update" time |
Revocation Checking Workflow
Understanding how Windows validates certificate revocation:
Revocation Checking Steps
- Check Global Setting: Is
ValidateRevocation=true? - Check Certificate Override: Does certificate have
SkipRevocationCheck=true? - Check Extensions: Does certificate have CRL Distribution Point or OCSP extensions?
- Try OCSP First: Query OCSP responder (faster, real-time)
- Fallback to CRL: If OCSP fails, download and parse CRL
- Determine State:
- Valid (OK): Not revoked
- Revoked (ERROR): Certificate explicitly revoked
- Offline/Unknown (WARNING): Cannot verify status
Revocation Status Display
Certificate details page shows comprehensive revocation information:
Current Implementation (Phase 3)
Chain Validation: PASSED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Revocation Status: ✅ Not Revoked
Last Checked: 2025-11-17 10:15:00 UTC
Method: OCSP
CRL Distribution Points:
• http://crl.example.com/intermediate-ca.crl
OCSP Responders:
• http://ocsp.example.com
Phase 10 Enhanced Display (Planned)
Chain Validation: PASSED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Revocation Status: ✅ Not Revoked
Last Checked: 2025-11-17 10:15:00 UTC
Method: OCSP (1,234 ms response time)
Next Check: 2025-11-17 11:15:00 UTC
CRL Information:
Distribution Point: http://crl.example.com/intermediate-ca.crl
This Update: 2025-11-15 00:00:00 UTC
Next Update: 2025-11-22 00:00:00 UTC
CRL Age: 2 days (✅ Fresh)
CRL Size: 45 KB (1,234 revoked certificates)
OCSP Responder Health:
Endpoint: http://ocsp.example.com
Status: ✅ Online
Response Time: 1,234 ms (✅ Good)
Last Successful Query: 2025-11-17 10:15:00 UTC
Availability (24h): 99.8%
Troubleshooting Revocation Issues
Issue 1: RevocationStatusUnknown on All Certificates
Symptoms:
- All certificates show
RevocationStatusUnknownwarning - Certificates from multiple CAs affected
Diagnosis:
# Test outbound connectivity to CRL endpoint
$crlUrl = "http://crl.example.com/ca.crl"
Invoke-WebRequest -Uri $crlUrl -UseBasicParsing
# Test OCSP responder
certutil -url "C:\path\to\certificate.cer"
# Check Windows proxy settings
netsh winhttp show proxy
Common Causes:
- ❌ Firewall blocking outbound HTTP/HTTPS
- ❌ Proxy misconfiguration
- ❌ DNS resolution failure
- ❌ Network connectivity issue
Resolution:
- Verify outbound HTTP/HTTPS access to revocation endpoints
- Configure Windows proxy if required:
netsh winhttp set proxy proxy-server:port - Add firewall rules allowing outbound access
- Test connectivity from monitoring agent server
Issue 2: OfflineRevocation for Specific CA
Symptoms:
- Certificates from specific CA show
OfflineRevocation - Other CA certificates work correctly
Diagnosis:
# Check CRL URL accessibility
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*CN=example*" }
$cert.Extensions | Where-Object { $_.Oid.FriendlyName -eq "CRL Distribution Points" }
# Download CRL manually
$crlUrl = "http://crl.example.com/ca.crl"
Invoke-WebRequest -Uri $crlUrl -OutFile "test-crl.crl"
# Parse CRL
certutil -dump "test-crl.crl"
Common Causes:
- ❌ CA's CRL distribution point server offline
- ❌ OCSP responder service down
- ❌ CA undergoing maintenance
Resolution:
- Contact CA support to report service outage
- Check CA's status page for known issues
- Temporarily set
SkipRevocationCheck=trueon affected certificates - Monitor for service recovery
Issue 3: Performance Degradation from Revocation Checks
Symptoms:
- Certificate validation takes 10+ seconds
- Monitoring agent polling intervals delayed
- Timeouts in application certificate validation
Diagnosis:
# Measure OCSP response time
Measure-Command {
certutil -url "C:\path\to\certificate.cer"
}
# Check CRL size and download time
$crlUrl = "http://crl.example.com/ca.crl"
Measure-Command {
Invoke-WebRequest -Uri $crlUrl -UseBasicParsing
}
Common Causes:
- ❌ Very large CRL files (10+ MB)
- ❌ Slow OCSP responder
- ❌ Network latency to revocation services
- ❌ Many certificates validated simultaneously
Resolution:
- ⏱️ Phase 10: Configure
RevocationTimeoutSecondsto prevent hanging - Use Windows revocation cache to minimize repeated queries
- Consider certificate cleanup to reduce validation load
- Contact CA about slow OCSP responders
Issue 4: Expired CRL Not Detected
Symptoms:
- CRL "Next Update" time has passed
- No alert generated for stale CRL
- Revocation checks continue using expired CRL
Current Limitation:
- Phase 3 does not detect expired CRLs
- Windows may continue using cached expired CRL
Phase 10 Resolution:
AlertOnExpiredCRL=truewill detect and alertCRLMaxAgeDaysthreshold for freshness warnings- Display CRL "Next Update" time in certificate details
Best Practices
Revocation Checking Strategy
- ✅ Enable revocation checking for all production certificates from public CAs
- ✅ Skip revocation for self-signed and internal CA certificates (when appropriate)
- ✅ Monitor OCSP/CRL availability to detect service outages early
- ✅ Configure firewall rules allowing outbound access to revocation endpoints
- ✅ Test revocation checking during certificate deployment
- ✅ Use OCSP stapling in IIS/web servers to improve performance
- ❌ Do NOT disable revocation globally unless absolutely necessary
Configuration Recommendations
| Environment | ValidateRevocation | SkipRevocationCheck | Rationale |
|---|---|---|---|
| Production (Public CAs) | true |
false |
Full revocation validation required |
| Production (Internal CAs) | true |
true (per-cert) |
Skip for certs with offline CRL |
| Development/Testing | true |
true (per-cert) |
Skip for self-signed certs |
| Air-Gapped Environments | false |
N/A | No internet access to revocation services |
Performance Optimization
- ✅ Use OCSP over CRL when possible (faster, smaller)
- ✅ Enable Windows CRL caching to reduce repeated downloads
- ✅ Monitor CRL size - large CRLs (50+ MB) impact performance
- ✅ Consider OCSP stapling in web servers
- ⏱️ Phase 10: Configure timeouts to prevent hanging on slow services
Security Compliance
- ✅ Audit certificates with
SkipRevocationCheck=truequarterly - ✅ Document justification for revocation check overrides
- ✅ Monitor for certificates in
Revokedstate - ✅ Investigate
RevocationStatusUnknownwarnings promptly - ⏱️ Phase 10: Enable
AlertOnDisabledRevocationfor compliance validation
Next Steps
- FAQ: Revocation Testing - Create test certificates with various revocation states
- Chain Validation - Comprehensive chain validation including revocation checking
- Certificate Configuration - Configure revocation checking and overrides