-
-
Notifications
You must be signed in to change notification settings - Fork 308
View File Certificates
Use this AppControl Manager page to inspect, search, sort, copy, and export highly detailed information about the public key certificates found in signed content on your system. The page can display the complete chains (Leaf, Intermediate, Root) for each signer of a signed file, as well as parse standalone certificates and signed App Control policy packages.
Tip
You can verify the signing certificates inside .CIP files (signed App Control policies) and standalone .cer certificate files.
Note
This feature supports files signed via Security Catalogs (.cat). When enabled, it can resolve certificates via the Windows catalog store if a file has no embedded signer.
- Any file with an embedded Authenticode signature
- Files signed via Security Catalogs (when "Include Security Catalogs" is enabled)
- Signed App Control policy packages (
.CIP) - Standalone X.509 certificate files (
.cer)
- Browse: Click "Browse for file" and pick a file to analyze.
- Drag and Drop: You can drag a file onto the page when the app is not elevated.
- Include Security Catalogs: Toggle on to resolve signers from Windows catalogs when a file has no embedded signature.
- CMS Details: For
.CIPfiles, click "CMS details" to view CMS metadata (version, content type, sizes, etc.). - Export: Click "Export to JSON" to save the data as a JSON file.
When "Include Security Catalogs" is enabled and a target file has no embedded signature:
- The app computes the file's Code Integrity hashes (SHA-1 and SHA-256) and searches the Windows catalog store for a matching entry.
- If found, the catalog file is used to resolve and display the signer's full certificate chain.
- If a catalog hash mismatch is encountered, it is logged; the UI continues processing other sources.
This is useful for system files and drivers which are often signed via catalogs.
When analyzing a .CIP file, the page decodes the CMS (PKCS#7) package and shows:
- CMS Version: The CMS structure version.
- Is Detached: Indicates whether the signature is detached.
- Content Type (Friendly Name): Friendly name of the CMS content type OID.
- Content Type (OID): The raw OID value of the CMS content type.
- Raw CMS Data Length: Total size in bytes of the CMS blob.
- ContentInfo Data Length: Size in bytes of the inner
ContentInfo.Content.
These values are only meaningful for .CIP. For other file types, these values are blank/zero.
Each row represents one certificate in a signer's chain. Columns:
| Name | Description |
|---|---|
| Signer Number | A unique identifier assigned to the certificate's signer. If the file is signed by multiple certificates, then each of them will have a different number, allowing you to easily differentiate between them. |
| Type | Certificate role in the chain: Leaf, Intermediate, or Root. |
| Subject Common Name | The Subject CN of the certificate. |
| Issuer Common Name | The Issuer CN of the certificate. For Root, this is the same as Subject. |
| Not Before | The date/time when the certificate becomes valid. |
| Not After | The date/time when the certificate expires. |
| Hashing Algorithm | The signature algorithm used by the certificate (e.g., SHA256RSA, ECDSA). |
| Serial Number | Unique serial number assigned by the issuing CA. |
| Thumbprint | Digest of the entire certificate (fingerprint), used for quick identification. |
| TBS Hash | Hash of the "To Be Signed" portion of the certificate. Useful for integrity checks. |
| Extension OIDs | List of extension OIDs present on the certificate, with friendly names when available. |
| Version | X.509 version of the certificate. |
| Has Private Key | Indicates whether a private key is associated with this certificate in the current context. |
| Archived | Whether the certificate is marked as archived. |
| Certificate Policies | Decoded certificate policies extension, when present. |
| Authority Information Access | Decoded AIA extension, when present (e.g., CA issuers/OCSP). |
| CRL Distribution Points | Decoded CRL distribution points, when present. |
| Basic Constraints | Indicates CA capability and path length constraints (if any). |
| Key Usage | Decoded Key Usage or Enhanced Key Usage information, when present. |
| Authority Key Identifier | Raw AKI, shown as a hex string when present. |
| Subject Key Identifier | SKI value, when present. |
| Raw Data Length | Length (in bytes) of the DER-encoded certificate. |
| Public Key Length | Public key size in bits (e.g., RSA/ECDSA key size), when determinable. |
Right-click a row to open the context menu:
- Copy row: Copies the selected row(s) as labeled text (all columns) to the clipboard.
- Copy individual items: Copy a single column value from the selected row.
Keyboard shortcut:
- Ctrl+C copies the currently selected row(s) in labeled format.
- If you see no rows for a signed file, try enabling "Include Security Catalogs" (common for drivers/system files).
- Root certificates show the same value for Subject and Issuer (self-signed).
- Some extensions may be unavailable or displayed as raw hex if decoding is not applicable.
- Catalog hash mismatches are logged and skipped gracefully.
Used for analyzing the firmware's UEFI variables and Secure Boot data directly from the application.
Key capabilities include:
-
Get Platform Key: Retrieve the Platform Key (PK), the root of trust that controls access to the Key Exchange Key database and establishes ownership of the platform.
-
Get Default Platform Key: Retrieve the factory default Platform Key (PKDefault), representing the original root of trust provided by the system manufacturer.
-
Get Key Exchange Key: Retrieve the Key Exchange Key (KEK) database, containing keys trusted to update the signature database (db) and the forbidden signature database (dbx).
-
Get Default Key Exchange Key: Retrieve the factory default Key Exchange Key (KEKDefault) database, containing the initial set of keys trusted for database updates provided by the system manufacturer.
-
Get Signature Database: Retrieve the Signature Database (db), containing the list of trusted certificates and hashes allowed to execute on this system.
-
Get Default Signature Database: Retrieve the factory default Signature Database (dbDefault), containing the initial set of trusted certificates and hashes provided by the system manufacturer.
-
Get Forbidden Signature Database: Retrieve the Forbidden Signature Database (dbx), containing the revocation list of compromised certificates and hashes that are blocked from booting.
-
Get Default Forbidden Signature Database: Retrieve the factory default Forbidden Signature Database (dbxDefault), containing the initial revocation list provided by the system manufacturer.
Tip
You can read more about these UEFI Secure Boot variables on:
- Create AppControl Policy
- Create Supplemental Policy
- System Information
- Configure Policy Rule Options
- Policy Editor
- Simulation
- Allow New Apps
- Build New Certificate
- Create Policy From Event Logs
- Create Policy From MDE Advanced Hunting
- Create Deny Policy
- Merge App Control Policies
- Deploy App Control Policy
- Get Code Integrity Hashes
- Get Secure Policy Settings
- Update
- Sidebar
- Validate Policies
- View File Certificates
- Microsoft Graph
- Firewall Sentinel
- Protect
- Microsoft Security Baselines
- Microsoft Security Baselines Overrides
- Microsoft 365 Apps Security Baseline
- Microsoft Defender
- Attack Surface Reduction
- Bitlocker
- Device Guard
- TLS Security
- Lock Screen
- User Account Control
- Windows Firewall
- Optional Windows Features
- Windows Networking
- Miscellaneous Configurations
- Windows Update
- Edge Browser
- Certificate Checking
- Country IP Blocking
- Non Admin Measures
- Group Policy Editor
- Manage Installed Apps
- File Reputation
- Audit Policies
- Cryptographic Bill of Materials
- Intune
- Configuration Service Provider (CSP)
- Service Manager
- Duplicate Photos Finder
- EXIF Manager
- Bootable Drive Maker
- Introduction
- How To Generate Audit Logs via App Control Policies
- How To Create an App Control Supplemental Policy
- The Strength of Signed App Control Policies
- How To Upload App Control Policies To Intune Using AppControl Manager
- How To Create and Maintain Strict Kernel‐Mode App Control Policy
- How to Create an App Control Deny Policy
- App Control Notes
- How to use Windows Server to Create App Control Code Signing Certificate
- Fast and Automatic Microsoft Recommended Driver Block Rules updates
- App Control policy for BYOVD Kernel mode only protection
- EKUs in App Control for Business Policies
- App Control Rule Levels Comparison and Guide
- Script Enforcement and PowerShell Constrained Language Mode in App Control Policies
- How to Use Microsoft Defender for Endpoint Advanced Hunting With App Control
- App Control Frequently Asked Questions (FAQs)
- System Integrity Policy Transformations | XML to CIP and Back
- About Code Integrity Policy Signing
- How To Install Microsoft Store Apps Completely Offline
- Create Bootable USB flash drive with no 3rd party tools
- Event Viewer
- Group Policy
- How to compact your OS and free up extra space
- Hyper V
- Git GitHub Desktop and Mandatory ASLR
- Signed and Verified commits with GitHub desktop
- About TLS, DNS, Encryption and OPSEC concepts
- Things to do when clean installing Windows
- Comparison of security benchmarks
- BitLocker, TPM and Pluton | What Are They and How Do They Work
- How to Detect Changes in User and Local Machine Certificate Stores in Real Time Using PowerShell
- Cloning Personal and Enterprise Repositories Using GitHub Desktop
- Only a Small Portion of The Windows OS Security Apparatus
- Rethinking Trust: Advanced Security Measures for High‐Stakes Systems
- Clean Source principle, Azure and Privileged Access Workstations
- How to Securely Connect to Azure VMs and Use RDP
- Basic PowerShell tricks and notes
- Basic PowerShell tricks and notes Part 2
- Basic PowerShell tricks and notes Part 3
- Basic PowerShell tricks and notes Part 4
- Basic PowerShell tricks and notes Part 5
- How To Access All Stream Outputs From Thread Jobs In PowerShell In Real Time
- PowerShell Best Practices To Follow When Coding
- How To Asynchronously Access All Stream Outputs From Background Jobs In PowerShell
- Powershell Dynamic Parameters and How to Add Them to the Get‐Help Syntax
- RunSpaces In PowerShell
- How To Use Reflection And Prevent Using Internal & Private C# Methods in PowerShell