Certificate & CSR Decoder
Read certificates, CSRs, .p7b bundles and CRLs — then check the chain reaches a trusted root, covers your host name, follows the CA/Browser Forum rules, and isn’t revoked.
How to use
- Paste PEM blocks or open a file — or use “Get the chain from a server” for a ready command.
- Read the trust verdict, the expiry overview (for several certificates), then the lint and details.
- Type a host name to check coverage; add the CA’s CRL to check revocation.
Get the chain from a server
This page cannot connect to servers. Run this command, then paste its output in the box above.
What “trusted” actually means
A certificate is trusted when a chain of signatures leads from it to a root certificate your software already trusts. The decoder builds that chain from what you paste: it checks each signature, the validity dates, that every issuer is allowed to act as a CA, and that the last link is in the bundled Mozilla root store, the list Firefox and most Linux systems use.
The most common production fault is a missing intermediate certificate. Browsers often hide it, because they cache intermediates or download them from the URL inside the certificate, so the site works in Chrome but fails in curl, Java, Python or on Android. Paste exactly what the server sends (the “Get the chain from a server” command does this) and a gap shows up immediately.
Host names, lifetimes and the lint
Browsers match the host name only against the Subject Alternative Name list; the Common Name has been ignored for years (RFC 9525). Type a host name to see whether a certificate covers it, including how wildcards match one label only.
Publicly trusted TLS certificates follow the CA/Browser Forum Baseline Requirements. Their maximum lifetime is shrinking: 398 days before March 2026, 200 days now, and 47 days by 2029. The lint flags lifetimes over the limit for the issue date, weak keys, missing extensions and other rules a CA should never get wrong — useful for private CAs, which are not audited.
Revocation without the network
This page cannot connect anywhere, so it never asks an OCSP responder. Paste the CA’s CRL instead and the decoder checks the serial number against it and verifies the CRL’s signature. CRLs matter more again since Let’s Encrypt stopped running OCSP in 2025 and browsers rely on CRL-based revocation lists.
Common questions
Is it safe to paste a certificate here?
Yes. Certificates and CSRs are public by design, and this page cannot send anything anywhere: your browser blocks every connection it tries to make. Never paste a private key — the decoder refuses them.
How do I check a website’s certificate chain?
Open “Get the chain from a server”, enter the host name and run the command it gives you. Paste the output here to see whether the chain reaches a trusted root, covers the host name and is in the right order.
Why does my certificate show “not trusted”?
Usually an intermediate certificate is missing from what the server sends, or the certificate comes from a private CA. The chain check shows exactly which link is missing.
Known limitations
- Revocation is checked only against a CRL you paste — no OCSP or CT lookups.
- Trust uses a snapshot of Mozilla’s root store; private roots aren’t included.
- The lint covers the common Baseline Requirements, not all of them.
- Private keys are refused; files over 50 MB aren’t opened.
- Browser extensions can read any page — use a private window for sensitive data. How the lock works
Related reading on CipherMind
Standards & references
- RFC 5280 — X.509 certificates and CRLs (opens in a new tab)
- RFC 9525 — host-name matching (replaces RFC 6125) (opens in a new tab)
- CA/Browser Forum TLS Baseline Requirements (opens in a new tab)
- CCADB — source of the Mozilla root list (opens in a new tab)
- RFC 2986 — PKCS #10 CSRs (opens in a new tab)
- RFC 5652 — CMS / PKCS #7 (.p7b) (opens in a new tab)