A SCOM Management Pack that discovers and monitors SSL/TLS certificates in the Windows Central Certificate Store β with automatic expiration alerts and issuer filtering.
Managing SSL/TLS certificates across servers is tedious and forgetting to renew one can cause outages. This Management Pack automates the entire monitoring lifecycle:
- Discovers the Central Certificate Store (CCS) on any Windows Server where it's configured
- Inventories all PFX certificates within the store
- Monitors expiration dates and raises alerts when certificates are about to expire
- Filters out irrelevant certificates (e.g. internal test CAs) via configurable issuer exclusions
No agents to deploy, no scripts to schedule β it runs inside SCOM like any other Management Pack.
- Features
- Requirements
- Quick Start
- Configuration
- Monitoring Details
- Troubleshooting
- Event ID Reference
- Best Practices
- Security
- Tech Stack
- Changelog
- License
-
π Automatic Discovery β Detects the Central Certificate Store and all certificates within it by reading the IIS CCS registry configuration.
-
β° Expiration Monitoring β Raises a Warning alert when certificates are within 24 hours of expiring (configurable). Automatically resolves when renewed.
-
π·οΈ Issuer Filtering β Exclude certificates from specific CAs (e.g. internal test issuers) to reduce alert noise. Supports partial matching with wildcards.
-
π Detailed Alerts β Each alert includes subject, expiration date/time, issuer information, and hours until expiration.
-
βοΈ Fully Configurable β Override warning thresholds, discovery intervals, and monitoring intervals via standard SCOM overrides.
- System Center Operations Manager 2012 R2 or later
- Windows Server 2012+ with IIS Central Certificate Store configured
- PowerShell 4.0 or later on monitored servers
- SCOM agent service account with read access to the CCS path
Import-SCOMManagementPack -FullName "CentralCertificateStore.MP.xml"- CCS discovery runs every 4 hours
- Certificate discovery runs every 1 hour
- First alerts appear after the initial certificate discovery cycle
If you need to exclude internal test CAs, see Excluding Certificates by Issuer below.
- In SCOM Console β Authoring β Management Pack Objects β Object Discoveries
- Find Certificate Discovery (
CentralCertificateStore.MP.Certificate.Discovery) - Right-click β Overrides β Override the Discovery β For all objects of class: Central Certificate Store
- Set ExcludedIssuers with a semicolon-separated list:
CN=Internal Test CA;CN=Dev Certificate Authority;O=Test Organization - Save the override to an appropriate Management Pack
The default threshold is 24 hours before expiration. To change it:
- Authoring β Monitors β Find Certificate Expiration Monitor
- Override WarningThresholdHours (e.g.
48for 2 days,168for 1 week)
| Component | Default | Override Parameter |
|---|---|---|
| CCS Discovery | 4 hours | IntervalSeconds (e.g. 7200 for 2h) |
| Certificate Discovery | 1 hour | IntervalSeconds |
| Expiration Monitor | 1 hour | IntervalSeconds |
Central Certificate Store Discovery (every 4 hours):
- Runs on all Windows Server Operating Systems
- Checks registry path
HKLM:\SOFTWARE\Microsoft\IIS\CentralCertProvider - Requires
Enabled = 1and a validCertStoreLocationpath - Creates one CCS instance per server
Certificate Discovery (every 1 hour):
- Reads all PFX files from the configured CCS path
- Filters out certificates matching excluded issuers
- Extracts: Thumbprint, Subject, Issuer, Valid From, Valid Until, Friendly Name
| State | Condition |
|---|---|
| π’ Healthy | Certificate is valid and not within warning threshold |
| π‘ Warning | Certificate will expire within the configured threshold |
| π΄ Critical | Certificate has already expired |
Alerts auto-resolve when the certificate is renewed or the expiration window extends beyond the threshold.
- Verify CCS is configured:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\IIS\CentralCertProvider"
- Confirm
Enabled = 1andCertStoreLocationpoints to an accessible path - Verify PFX files exist in the configured path
- Check SCOM event logs for script errors (Event IDs 2000β2006)
- Check SCOM event logs for monitoring script errors (Event IDs 3000β3006)
- Verify certificate files are not corrupted
- Confirm password-protected PFX files have the correct password in registry
- Verify the override is saved and applied
- Check that issuer names match exactly (partial matching with wildcards is supported)
- Use semicolons (
;) as separators β not commas - Wait for the next discovery cycle (1 hour) or trigger discovery manually
# Discovery events
Get-EventLog -LogName "Operations Manager" -Source "Health Service Script" |
Where-Object { $_.Message -like "*Discover-Central*" } |
Select-Object TimeGenerated, EntryType, Message
# Monitoring events
Get-EventLog -LogName "Operations Manager" -Source "Health Service Script" |
Where-Object { $_.Message -like "*Monitor-Certificate*" } |
Select-Object TimeGenerated, EntryType, MessageDiscovery Events
| Event ID | Meaning |
|---|---|
| 1000 | Central Certificate Store discovered successfully |
| 1001 | Central Certificate Store not enabled |
| 1002 | Registry key not found |
| 1003 | Error during CCS discovery |
| 2000 | Certificates discovered successfully |
| 2001β2006 | Various certificate discovery errors/warnings |
Monitoring Events
| Event ID | Meaning |
|---|---|
| 3000 | Certificate is healthy |
| 3003 | Certificate has expired (Critical) |
| 3004 | Certificate expiring soon (Warning) |
| 3005 | Certificate not found |
| 3006 | Monitoring error |
- Set thresholds that match your renewal process β if certificate renewal takes a week, set the threshold to at least 168 hours
- Exclude test CAs β reduce alert noise by filtering out internal and development certificate authorities
- Configure alert routing β set up SCOM notification subscriptions to email or Teams for certificate alerts
- Test with expiring certs β periodically verify monitoring works by deploying a certificate that expires within the threshold
- Integrate with renewal automation β if you use ACME/Let's Encrypt or internal CA automation, alerts should auto-resolve after renewal
- The Management Pack reads certificates with read-only access β no private keys are extracted
- PFX passwords stored in registry should use encrypted storage where possible
- SCOM agent service account requires read access to the CCS path
- Consider restricting access to override Management Packs containing issuer filter configurations
SCOM-CCS-Monitoring/
βββ CentralCertificateStore.MP.xml # The Management Pack
βββ QUICKSTART.md # Quick start guide
βββ README.md # This file
βββ Scripts/
βββ Discover-CentralCertificateStore.ps1
βββ Discover-CentralCertificates.ps1
βββ Monitor-CertificateExpiration.ps1
- π Initial release
- β¨ Central Certificate Store discovery
- β¨ Certificate discovery with issuer filtering
- β¨ Expiration monitoring with configurable 24-hour threshold
- β¨ Full override support for all key parameters
MIT β do what you want, just give credit.
Made with π€ by cheswick.dev