SSOGEN / Free tools / Certificate Decoder: Read an X.509 Certificate in Your Browser
Free tool
Certificate Decoder: Read an X.509 Certificate in Your Browser
This free certificate decoder reads an X.509 certificate (a TLS server certificate, a SAML signing certificate or a token-signing certificate) and shows who it is for, when it expires, which key it holds and its SHA-256 and SHA-1 fingerprints, with nothing uploaded.
Decode an X.509 certificate here
Paste one certificate, or several in sequence, as PEM (the text between -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----) or as plain base64.
For a SAML signing certificate, paste the value of the X509Certificate element from the metadata; the BEGIN and END lines are not needed.
- Load an Acme chain. It shows a leaf, an issuing CA and a root.
- Load the chain in the wrong order. It shows what a broken bundle looks like.
PEM (-----BEGIN CERTIFICATE----- or BEGIN CERTIFICATE REQUEST) or plain base64. Paste several certificates one after another to check a whole chain.
Private by design. Decoding happens in this page and nothing is uploaded. A certificate and a CSR hold only public information, but never paste a private key into any web page: this tool refuses it.
Free, in your browser. No sign-up, no limit, nothing uploaded.
A certificate contains only public information. If you paste a private key by mistake, the tool refuses it, but never paste one into a web page.
If you hold a certificate signing request instead, use the CSR decoder to check it before you send it to a certificate authority. This page is for a certificate that has already been issued.
What an X.509 certificate holds
An X.509 certificate binds a name to a public key and is signed by the party that vouches for that binding.
A certificate decoder (also called an SSL or TLS certificate decoder, an X.509 decoder or a PEM decoder) turns the base64 blob into readable fields. With those fields you can confirm three things:
- that this is the right certificate
- when it expires
- whether the systems that depend on it will keep working
This decoder is free, runs in your browser and makes no network request when you decode.
Reading a certificate field by field
Work through the output from the top. The middle column of the table says what to check; the last column names the mistake that field most often exposes.
| Field | What to check | The mistake it exposes |
|---|---|---|
| Subject | Organization and common name match the owner you expect. | A renewed certificate issued to the wrong team or environment. |
| Issuer | The signer is the CA you expect. | A test or old CA left in place after a migration. |
| Valid from, valid until | Today falls inside the window; days left is comfortable. | An expiry that nobody owns. |
| Serial number | Unique per issuer; useful to tell two certificates with one name apart. | Replacing a certificate and not noticing it is the old one. |
| Public key | Type and size: RSA 2048 or more, or EC P-256 and up. | A 1024-bit key from an old generator. |
| Signature algorithm | SHA-256 or stronger. | SHA-1 or MD5, which many clients refuse. |
| Names (SAN) | The hostnames or identifiers it covers. | Name mismatch; a wildcard used at the wrong depth. |
| Key usage | What the key may do, such as digital signature. | A key not allowed to do what you are asking of it. |
| Extended key usage | The purposes it is limited to, such as server authentication. | A certificate with the wrong purpose on a server. |
| CA flag and path length | Whether it may sign other certificates. | A leaf that is secretly a CA, or a CA that cannot issue your intermediate. |
| Key identifiers | The key’s own ID and its issuer’s key ID. | Matching a certificate to its issuer when two share a name. |
| SHA-256 and SHA-1 fingerprints | A hash of the whole certificate. | Two people comparing different files. |
RFC 5280 (read 2026-10-09) defines these fields.
Section 4.1.2.2 says a serial number must be a positive integer of no more than 20 octets, unique for each certificate a given CA issues.
For that reason the decoder shows the serial in hexadecimal with colons, not as a short number.
Fingerprint and thumbprint
A fingerprint is a hash of the certificate’s complete DER encoding.
- Definition. OpenSSL’s documentation (read 2026-10-09) describes it as the digest of the DER-encoded version of the entire certificate, with SHA-1 as the default digest for the
-fingerprintoption. - Sensitivity. Changing one byte changes the value.
- Comparison. To confirm that two parties hold the same certificate, compare the SHA-256 fingerprint, not the subject.
- Thumbprint. The word is used loosely. Many tools use it for the SHA-1 fingerprint, and a thumbprint pasted with no hash named could be either one, so confirm the algorithm on both sides before comparing.
- JWK thumbprint. As shown by the JWKS inspector, it is a hash of a public key, not of a certificate, and does not match a certificate fingerprint even for the same key.
The decoder shows both SHA-256 and SHA-1. Use SHA-256 for new comparisons and SHA-1 only for systems that still require it.
As a fingerprint, SHA-1 is only an identifier for matching; the real concern is SHA-1 as a signature algorithm, covered below.
SAML signing certificates: why expiry breaks sign-in
In SAML, the identity provider signs each assertion with its private key. The application verifies the signature with the public certificate it took from the identity provider’s metadata.
It usually trusts that certificate directly rather than through a public CA, so the expiry date inside the certificate is the deadline.
After that date, a correctly configured application can reject every assertion. Users get a sign-in error although nothing else changed. For the message format, see what is SAML and the SAML assertion explainer.
Most failures happen during rollover. Replacing the signing certificate affects both sides.
Once the identity provider signs with the new key, every application must already hold the new certificate. Any application that does not will fail.
The safe order:
- Publish the new certificate beside the old one.
- Wait until every application has picked it up.
- Only then sign with the new key.
Before you start, decode both certificates and record the old and new SHA-256 fingerprints. During the change you can then tell which one each application holds.
Three tools help:
- Check a whole metadata file. Use the SAML metadata checker, which lists each certificate with its days left.
- Build the file for a new application. Use the SAML metadata generator.
- See a failing sign-in. Capture the exchange with the SAML tracer.
Token-signing certificates in other protocols behave the same way. A relying party that pins or caches a signing certificate fails on the day it expires.
Put the expiry date in a calendar owned by a named person.
TLS certificates: names, usage and chain order
For a web server, three checks matter: the SAN, the extended key usage and the chain. Browsers match the host against the SAN, so the hostname users type must be listed. A wildcard like *.apps.acme.example covers exactly one label:
finance.apps.acme.examplematches.a.b.apps.acme.exampleandapps.acme.exampledo not.
Type a hostname in the box under the text area and the decoder applies that rule.
A certificate on a web server should list server authentication in its extended key usage. If the extension is present but names only other purposes, a client may refuse the certificate.
Chain order and the missing intermediate
A server should send its own certificate first, then the intermediate that signed it, and so on up the chain, without the root. These failures are common:
| What you see | Cause | Fix |
|---|---|---|
| Works in one client, fails in another | The server sent the leaf only, and the client has no other source for the intermediate. | Send the intermediate with the leaf. |
| “Incomplete chain” or “unable to get local issuer certificate” | The bundle has a gap, or the intermediate is not the one that signed the leaf. | Decode each certificate and compare the issuer of one to the subject of the next. |
| Chain verification fails though all certificates are present | The bundle is in the wrong order, for example root first. | Reorder: leaf, then issuing CA, then any higher intermediate. |
| Leaf and intermediate have the same subject name | Two CAs with one name, from a CA key rollover. | Compare the key identifiers: the leaf’s authority key ID must equal the issuer’s subject key ID. |
Paste the whole bundle and the decoder checks each adjacent pair:
- whether certificate 1 was issued by certificate 2
- whether the signature verifies under that key
- whether the last certificate is a root
A gap appears as “not issued by certificate 2”. The decoder checks order and gaps. It cannot check whether a client trusts the final issuer, because it does not know your trust store.
Key size, SHA-1 and SHA-256
Key size and signature hash are separate choices.
- Key. RSA 2048 bits or more, or an EC curve such as P-256. It is what the certificate carries.
- Signature algorithm. For example
sha256WithRSAEncryption. It is how the issuer signed the certificate. - Warnings. The decoder warns on an RSA key under 2048 bits and on a SHA-1 or MD5 signature, because many clients refuse those.
- Scope. Check the signature on the leaf and on each intermediate.
- EC keys. An EC key shows its curve instead of a bit length: P-256 is 256 bits, P-384 is 384 bits.
EC and RSA sizes are not comparable number for number, so a 256 beside an RSA 2048 does not indicate a weak key.
PEM, DER and base64
All three hold the same certificate:
- DER is the binary form.
- PEM is the DER bytes as base64, wrapped between
-----BEGIN CERTIFICATE-----and-----END CERTIFICATE-----lines. This is the form you can paste into a page. - Plain base64, like the value inside a SAML
X509Certificateelement, is the PEM body without the wrapper lines.
The decoder reads PEM and plain base64.
A binary .cer or .crt file is DER. Convert it first with openssl x509 -inform DER -in cert.cer -out cert.pem.
A .pfx or .p12 file also contains a private key, so do not paste it anywhere; extract only the certificate, on your own machine.
Decode a certificate with OpenSSL
The same checks work offline. These options come from the OpenSSL manual pages (read 2026-10-09). The file names are placeholders.
| Task | Command |
|---|---|
| Print every field | openssl x509 -in cert.pem -noout -text |
| Subject, issuer, serial | openssl x509 -in cert.pem -noout -subject -issuer -serial |
| Start and expiry dates | openssl x509 -in cert.pem -noout -dates |
| SHA-256 fingerprint | openssl x509 -in cert.pem -noout -fingerprint -sha256 |
| SHA-1 fingerprint | openssl x509 -in cert.pem -noout -fingerprint -sha1 |
| Names (SAN) only | openssl x509 -in cert.pem -noout -ext subjectAltName |
| Fails if it expires within 30 days | openssl x509 -in cert.pem -noout -checkend 2592000 |
| Read a DER file | openssl x509 -inform DER -in cert.cer -noout -text |
| See what a server sends, in order | openssl s_client -connect gateway.acme.example:443 -servername gateway.acme.example -showcerts |
| Verify a leaf through an intermediate | openssl verify -CAfile root.pem -untrusted intermediate.pem leaf.pem |
Two notes from the manuals:
-checkendtakes a value in seconds and exits nonzero if the certificate will have expired by then. 2592000 is 30 days.- For
-showcerts, OpenSSL says the list is exactly what the server sent, in the order sent, and not a verified chain. That makes it useful for spotting a missing intermediate.
Sources, read 2026-10-09: openssl-x509 and openssl-s_client.
We tested the decoder on a self-signed Acme certificate made with OpenSSL. The SHA-256 and SHA-1 fingerprints, serial, SANs, key usage and extended key usage matched OpenSSL’s output exactly.
Questions about certificate decoders
What is a certificate decoder?
How do I decode an X.509 certificate?
openssl x509 -in cert.pem -noout -text prints the same fields.What is the difference between a fingerprint and a thumbprint?
Why did SAML sign-in stop when a certificate expired?
How do I check the SSL certificate chain order?
openssl s_client -connect host:443 -showcerts lists the certificates in the order the server sent them.Should I use the certificate decoder or the CSR decoder?
Can I decode a PEM, .cer or .crt file?
openssl x509 -inform DER -in cert.cer -out cert.pem, then paste the result. Do not paste a .pfx or .p12 file, which also contains a private key.Is it safe to paste a certificate into a web page?
Where to go next
- Check a request. Use the CSR decoder.
- Make a request. Use the CSR generator.
- Inspect a metadata file. Use the SAML metadata checker.
- Register an application. See the SAML application guide.
- Make a test certificate. Use the self-signed certificate generator.
- More utilities. See the free tools page.