PEM · CRT · DER

SSL certificate decoder

Paste a certificate or a full chain, or load a .crt, .cer or .der file, to read its validity and days left, covered names, issuer, key, serial and fingerprints. When the issuer is in the same paste, each signature is checked against it. All of it runs on this page, so nothing is uploaded.

Decoded in this browser tab. Nothing you paste or load is uploaded, stored or logged. PEM text, a whole chain, or a binary .der/.cer file all work.

Paste one certificate or a whole chain that starts with -----BEGIN CERTIFICATE----- to see its dates, names, issuer, key and fingerprints.

Every field the decoder shows

These are the fields that decide whether a certificate works, in the order you usually need them.

FieldWhat it tells you
Valid from / valid untilThe notBefore and notAfter times in UTC, with whole days left rounded down, counted the same way as the live expiry checker.
Subject and SANsWho the certificate is for. Browsers match the hostname against the subject alternative names only.
IssuerThe certificate authority that signed it. A root CA names itself as its issuer.
Serial numberUnique for each issuing CA. It is what a revocation list, or a CA's support team, will ask you for.
Key type and sizeRSA bits or the ECDSA curve. RSA keys under 2048 bits are flagged.
Signature algorithmHow the issuer signed it, such as ECDSA with SHA-384. SHA-1 on anything but a root is flagged.
Key usage and extended key usageWhat the key may be used for. A website certificate needs TLS server authentication in its extended key usage.
Basic constraintsWhether it is a CA certificate, and how many CAs may sit below it (the path length).
SHA-256 and SHA-1 fingerprintsHashes of the whole certificate, for telling two certificates apart. Windows calls the SHA-1 value the thumbprint.
Public key SHA-256A hash of the public key alone. It matches the CSR and private key the certificate was issued for, and stays the same across a renewal that reuses the key.

Decode a certificate with OpenSSL

The terminal equivalents. Each command was run against the sample leaf certificate on this page with OpenSSL 3.

Subject, issuer, dates and serial
openssl x509 -in cert.pem -noout -subject -issuer -dates -serial
subject=CN = www.beacon-demo.test
issuer=C = GB, O = ExpiryBeacon Test, CN = ExpiryBeacon Test Issuing E1
notBefore=Oct 29 16:33:55 2026 GMT
notAfter=Oct 26 16:33:55 2036 GMT
serial=04A1B2C3D4E5F60718293A4B5C6D7E8F90
SHA-256 fingerprint
openssl x509 -in cert.pem -noout -fingerprint -sha256
sha256 Fingerprint=66:B4:02:45:4D:3B:5D:2F:74:1F:1A:8E:09:5D:AA:6B:1F:F0:6B:07:ED:A2:40:53:D8:2F:3D:2D:2B:CA:79:B9

Use -sha1 for the SHA-1 fingerprint. The decoder shows both.

A binary DER file
openssl x509 -inform der -in cert.der -noout -subject -enddate
subject=CN = www.beacon-demo.test
notAfter=Oct 26 16:33:55 2036 GMT

Convert DER to PEM with openssl x509 -inform der -in cert.der -out cert.pem, or the other way with -outform der.

Reading a certificate chain

A server should send its own certificate first, then each intermediate in order, each one signed by the next. Paste the whole bundle and the decoder lists every certificate, works out which one issued which, and checks each signature with the issuer's public key.

The root does not need to be sent, because clients already hold the roots they trust; including it only adds bytes to every handshake. A bundle that starts with an intermediate, lists certificates out of order, or repeats one is flagged.

The failure this catches most often is a missing intermediate. Browsers that cached the intermediate from another site carry on working, while API clients and freshly installed devices fail. That is also why the live checker reports how many certificates the server actually sent.

Check a chain and a key match with OpenSSL

Two questions the decoder answers in the browser, asked from a terminal instead.

Verify the chain
openssl verify -CAfile root.pem -untrusted intermediate.pem cert.pem
cert.pem: OK
Does this certificate match my private key?
openssl x509 -in cert.pem -noout -pubkey | openssl pkey -pubin -outform der | openssl dgst -sha256
openssl pkey -in cert.key -pubout -outform der | openssl dgst -sha256
SHA2-256(stdin)= 6a2c1a1b949461de074872fcac51d05c47d75ffa21f10a45537e33ac037247d9
SHA2-256(stdin)= 6a2c1a1b949461de074872fcac51d05c47d75ffa21f10a45537e33ac037247d9

Matching hashes mean the key and certificate belong together. The first value is the Public key SHA-256 the decoder shows.

Get the certificates out of a .p7b bundle
openssl pkcs7 -inform der -print_certs -in chain.p7b

Drop -inform der when the .p7b is PEM text. The printed certificates can be pasted straight into the decoder.

What the decoder flags

Problems come first, then warnings, then notes that are worth knowing but not urgent.

  • Certificates that have expired, are not valid yet, or expire within 30 days.
  • A signature that does not verify against the issuer in the same paste.
  • RSA keys under 2048 bits, and SHA-1 or MD5 signatures on anything but a root.
  • Leaf certificates with no subject alternative names, or with a common name that is not among them.
  • Lifetimes over 398 days, the most browsers accept for a publicly trusted TLS certificate.
  • Chains that start with a CA certificate, list certificates out of order, repeat one, or include the root.

From the file to the live server

A correct file is half the job. The other half is the server actually presenting it, and renewing it in time.

  1. Decode the file you deployed

    Confirm the names, dates and issuer are the ones you expected before you look anywhere else.

  2. Check what the server presents

    A renewed file on disk does not mean the server reloaded it. The SSL certificate checker makes a real handshake and shows the serial and SHA-256 fingerprint that is actually served, so you can compare them with this file.

  3. Monitor it

    Save the hostname as a monitor for a daily check, and an email before it reaches your warning window.

Questions about decoding a certificate

What is the difference between PEM, CRT, CER and DER?

DER is the binary encoding of a certificate. PEM is the same bytes in base64, between BEGIN CERTIFICATE and END CERTIFICATE lines. .crt and .cer are only file extensions and can hold either, so the decoder accepts both, pasted or loaded as a file.

Is my certificate uploaded?

No. The file is read and decoded by this page in your browser, and the fingerprints and signature checks use your browser's Web Crypto API. Certificates are public anyway, but private keys are not: if you paste one by mistake, the decoder refuses to read it.

Why is the expiry date different from my website's?

The decoder reads the file you give it. Your server may still be presenting an older certificate, because it was not reloaded after the renewal, or another server behind the same name still has the old file. The live checker shows what the server actually sends.

Can it read .pfx, .p12 or .p7b files?

Not directly. Extract the certificates first with openssl pkcs12 -in file.pfx -nokeys -out cert.pem, or openssl pkcs7 -print_certs -in bundle.p7b (add -inform der for a binary .p7b), then paste the result.

What is the SHA-1 fingerprint used for?

Mostly identification: Windows shows it as the certificate thumbprint, and some appliances still refer to certificates by it. It is a hash of the certificate, not its signature, so seeing one does not mean the certificate is signed with SHA-1.