Security Tools

X.509 Certificate Contents

Explore X.509 certificate structure including subject, issuer, validity period, public key, serial number, and extensions. Learn what each field means for SSL/TLS security.

By Inventive HQ Team

What an X.509 certificate actually contains

An X.509 certificate is a signed data structure defined by RFC 5280, and it is really two things stapled together: a to-be-signed (TBS) body that holds the identity and key material, and a signature block where a Certificate Authority vouches for that body. The TBS body carries eight core fields — version, serial number, signature algorithm, issuer, validity period, subject, subject public key info, and (in version 3) a list of extensions. The signature block then repeats the algorithm identifier and stores the actual bytes the CA computed by hashing the TBS body and signing that hash with its private key. Everything a browser needs to decide "is this the right server, is the key trustworthy, and has it expired" lives in those fields.

That is the summary an AI Overview will give you. What it can't show you is how the fields fit together, which ones browsers actually enforce in 2026, and where each one goes wrong — so below is a labeled diagram of the real structure, a field-by-field reference table, and the modern gotchas (SAN vs CN, the 398-day limit, Basic Constraints) that decide whether a certificate is accepted or thrown out.

The anatomy of a certificate

Structure of an X.509 v3 certificate A certificate is split into a to-be-signed body containing the core fields and extensions, plus a signature block where the CA signs a hash of that body. X.509 v3 Certificate To-Be-Signed (TBS) body Version · Serial Number · Signature Algorithm Issuer (which CA signed this) Validity (Not Before → Not After) Subject (who this identifies) Subject Public Key Info (algorithm + key) Extensions (v3) Subject Alternative Name (SAN) Basic Constraints (CA:TRUE / CA:FALSE) Key Usage · Extended Key Usage Authority / Subject Key Identifier CRL Dist. Points · Authority Info Access Certificate Transparency SCTs SAN is what browsers match — not CN hash Signature Signature Algorithm CA hashes the TBS body, then signs the hash with its private key. signed bytes Verify chain: re-hash the body, check the signature with the issuer's public key.

Notice the split: the CA never signs the whole certificate, it signs a hash of the TBS body. When your browser validates the chain, it re-hashes that same body and checks the signature against the issuer's public key. Tamper with a single byte of the subject or the SAN list and the hash changes, the signature no longer verifies, and the connection is refused.

Advertisement

Field-by-field reference

FieldWhat it holdsWhy it matters / common gotcha
Versionv1, v2, or v3 (encoded 0, 1, 2)Only v3 supports extensions. Every real TLS cert today is v3.
Serial NumberUnique positive integer per issuing CAUsed by CRL/OCSP to name revoked certs. Must be ≤20 octets and carry random entropy (anti-collision).
Signature Algorithme.g. sha256WithRSAEncryption, ecdsa-with-SHA256SHA-1 signatures are deprecated and rejected by browsers.
IssuerDistinguished Name of the signing CAMust exactly match the Subject of the CA one link up the chain.
ValidityNot Before and Not After timestamps (UTC)Public TLS certs are capped at 398 days. Expiry is the #1 cause of outages.
SubjectDistinguished Name of the cert ownerCN inside the Subject is legacy — no longer used for hostname matching.
Subject Public Key InfoAlgorithm + the public key bytesRSA 2048+/ECDSA P-256+. This is the key the browser encrypts/verifies against.
Subject Alternative NameList of DNS names, IPs, or emailsThe field browsers actually match the hostname against. Wildcards (*.example.com) live here.
Basic ConstraintsCA:TRUE/CA:FALSE (+ path length)Stops a leaf cert from signing other certs. Critical extension.
Key UsageBit flags: digitalSignature, keyEncipherment, keyCertSign…Restricts low-level operations the key is permitted to do.
Extended Key UsageOIDs: serverAuth, clientAuth, codeSigning…Missing serverAuth = browser rejects the TLS handshake.
AKI / SKIAuthority & Subject Key IdentifiersHashes that let a verifier link a cert to the exact issuing key when building the chain.
AIA / CRL Dist. PointsURLs for OCSP and CA issuer / revocation listsHow clients fetch revocation status and missing intermediates.
SCTsSigned Certificate TimestampsProof the cert was logged to Certificate Transparency; Chrome requires them.

The three fields people get wrong

SAN, not CN. The single most common misconception is that the Common Name is the hostname. It was, historically — but since Chrome 58 (May 2017) and equivalent changes in Firefox and Safari, clients match the requested hostname only against the Subject Alternative Name list. If you request a cert with www.example.com in the CN but forget to include it in the SAN, every modern browser throws NET::ERR_CERT_COMMON_NAME_INVALID. When you deploy a cert, check the SAN list first — that is the authoritative name field.

The 398-day ceiling. Under the CA/Browser Forum Baseline Requirements, a publicly trusted TLS certificate issued on or after 1 September 2020 cannot be valid for more than 398 days. This is why automated renewal (ACME/Let's Encrypt) is now the norm rather than a convenience. Private and internal CAs are not bound by this limit, but any cert from a public CA will be rejected at issuance if you ask for longer. (The industry is moving toward even shorter lifetimes, so build automation now.)

Basic Constraints is a security boundary. CA:TRUE means a certificate is allowed to sign other certificates. On a leaf certificate this flag must be CA:FALSE (or absent). The infamous class of attacks where an end-entity cert was used to mint fraudulent certificates existed precisely because clients once ignored this flag. Today it is enforced: a leaf cert presenting CA:TRUE is a red flag, and a properly built chain checks it at every link.

Read a certificate yourself

You never have to trust a description — decode the certificate and read the fields directly. Paste the PEM block into our client-side X.509 decoder, which expands the DER structure entirely in your browser so the certificate never leaves your device. Or run it locally:

openssl x509 -in cert.pem -noout -text

Both expand every field — version, serial, issuer, subject, validity, public key, and each extension. Before you trust or deploy a certificate, confirm three things: the SAN list contains the exact hostname you are serving, Not After is comfortably in the future, and the Extended Key Usage includes serverAuth. Those three checks catch the overwhelming majority of certificate failures.

Frequently Asked Questions

What are the main fields in an X.509 certificate?

A certificate is split into two parts: the to-be-signed (TBS) body and the CA's signature over it. The TBS body holds version, serial number, signature algorithm, issuer, validity (Not Before / Not After), subject, subject public key info, and — in version 3 — a set of extensions. The signature block repeats the algorithm and carries the actual signature bytes the CA computed over the TBS body.

Does the browser still use the Common Name (CN) field?

No. Since Chrome 58 (May 2017) and comparable dates in other browsers, clients validate the hostname only against the Subject Alternative Name (SAN) extension and ignore the CN entirely for matching. A certificate with a hostname in the CN but not in the SAN will fail with a name-mismatch error even though the CN looks correct.

What is the difference between the Subject and the Issuer?

The Subject identifies who the certificate belongs to (the website, device, or person). The Issuer identifies the Certificate Authority that signed it. In a self-signed root certificate the Subject and Issuer are identical. In a normal leaf certificate the Issuer names the intermediate CA one link up the chain.

What does Basic Constraints CA:TRUE mean?

The Basic Constraints extension marks whether a certificate is allowed to sign other certificates. CA:TRUE means it is a CA certificate (a root or intermediate) and can issue certificates below it; CA:FALSE (or the absence of the flag) means it is an end-entity certificate and must never be trusted to sign others. This flag is what stops a leaf certificate from being abused to mint fraudulent certificates.

How long can a public TLS certificate be valid?

Under the CA/Browser Forum Baseline Requirements, publicly trusted TLS certificates issued since 1 September 2020 may have a maximum validity of 398 days. Older certificates allowed two or three years, and internal or private-CA certificates can be set to any length, but public CAs will reject requests over the 398-day limit.

What is the Serial Number field for?

The serial number is a unique positive integer the issuing CA assigns to each certificate it signs. It lets the CA and revocation systems reference a specific certificate — for example, a CRL or OCSP response identifies revoked certificates by serial number. RFC 5280 requires it to be positive and no longer than 20 octets, and CAs add random entropy to it to resist hash-collision attacks.

What are Key Usage and Extended Key Usage?

Key Usage is a bit field that restricts what the key can do at a low level — digital signature, key encipherment, certificate signing, and so on. Extended Key Usage narrows it to specific purposes by OID, most commonly serverAuth (TLS server) and clientAuth (TLS client). A certificate without serverAuth in its Extended Key Usage will be rejected by browsers even if everything else is valid.

How do I read the contents of a certificate myself?

Paste the PEM block into a client-side decoder, or run "openssl x509 -in cert.pem -noout -text" locally. Both expand the DER structure into human-readable fields — version, serial, issuer, subject, validity, public key, and every extension — so you can confirm the SAN list, expiry date, and CA flags before you trust or deploy the certificate.

X.509