Just to add my one cent.
I'm not aware of any such ready tools, however this feature was requested by a customer of mine some time ago. Eventually, I ended up with my own PowerShell solution for Windows. Here are two blog posts where I describe the behavior:
Although, postings refer to Microsoft ADCS, there is a -Certificate
parameter where you can pass arbitrary certificate.
Generally, the script does the following:
- Prepare input certificate;
- Execute chain for each certificate to select trusted anchors and to go through the chain;
- Retrieve all Issuer URLs from AIA;
- Validate each url (must be either http or ldap) and attempt to download the contents;
- If contents is downloaded, verify whether it is a certificate;
- Verify if the downloaded certificate is an issuer of the certificate in subject;
- Validate other cert properties;
- Extract URLs from CDP extension;
- Validate each url (must be either http or ldap) and attempt to download the contents;
- If contents is downloaded, verify whether it is a CRL;
- Validate basic CRL properties, like validity (not yet valid, expired, about to expire);
- Validate whether the CRL has valid signature (against CA certificate);
- Do the same for DeltaCRLs;
- Extract all OCSP URLs from AIA extension;
- Validate OCSP response by sending OCSP request and processing response;
- Compose status report (managed, I maintain report object and you can access report properties);
- Repeat steps 3-16 for each subsequent certificate in the chain up to root certificate;
- Compose summary report.
Not all you've requested (cross-certificates are not verified), but enough for a good start.
Where to get the latest version of the script? It is a part of my PowerShell PKI module. Download sources of the most recent release: https://pspki.codeplex.com/releases
you will need only three files:
Get-EnterprisePKIHealthStatus.ps1
PKI.Core.dll
SysadminsLV.Asn1Parser.dll
All files are digitally signed by me. If you concern about dlls, they are opensourced: PKIX.NET (PKI.Core.dll) and Asn1DerParser.NET (SysadminsLV.Asn1Parser.dll)
and the last, online help for PowerShell function: Get-EnterprisePKIHealthStatus.
HTH