The short answer
An X.509 certificate is the standard data structure that binds a public key to an identity and carries a certificate authority's signature over that binding — the actual object behind every SSL/TLS, code signing, and S/MIME certificate. It has three parts: a body (the tbsCertificate) holding the version, serial number, issuer, validity dates, subject, public key and v3 extensions; an identifier for the signature algorithm; and the CA's signature over that body. The extension that decides whether a website certificate works is the Subject Alternative Name (SAN): browsers match the hostname against the SAN and ignore the Common Name completely.
On this page
What an X.509 certificate is
A public key on its own proves nothing. Anyone can generate a key pair and claim to be your bank — the hard part is proving that a particular public key really belongs to a particular identity. An X.509 certificate solves that by being a signed statement: a certificate authority (CA) inspects who you are, then issues a document that says "this public key belongs to this subject," and signs it with the CA's own private key. Because browsers and operating systems already trust the CA's key, they can extend that trust to anything the CA signs.
That trust model is the foundation of public key infrastructure (PKI), and X.509 is the certificate format PKI is built on. The same structure is used whether the certificate authenticates a website over TLS, a software publisher through code signing, or a person via S/MIME email. What changes between those uses isn't the format — it's which fields and extensions are filled in.
The X.509 standard and RFC 5280
"X.509" is the name of an ITU-T recommendation that first defined a public-key certificate format back in 1988. It has gone through three versions. Version 1 had only a fixed set of fields; version 2 added issuer and subject unique identifiers; and version 3, finalized in the mid-1990s, added the flexible extensions mechanism that all modern certificates rely on. In practice, essentially every certificate you'll encounter today is X.509 v3.
The base ITU-T standard is broad, so for the public internet the IETF narrowed it into a concrete profile: RFC 5280, the "Internet X.509 Public Key Infrastructure Certificate and CRL Profile." RFC 5280 spells out exactly which fields and extensions a certificate must contain, how they're encoded, and which extensions a conforming client must understand — among them key usage, certificate policies, subject alternative name, basic constraints, name constraints, policy constraints, extended key usage, and inhibit-anyPolicy. On top of RFC 5280, the CA/Browser Forum Baseline Requirements add further rules that publicly trusted CAs must follow, which is why a browser-trusted certificate is more tightly constrained than the raw standard allows.
The three-part structure
At the top level, an X.509 certificate is a sequence of just three elements. Understanding this split makes everything else fall into place:
1. The certificate body (tbsCertificate)
"TBS" stands for to be signed. This is the substance of the certificate — the version, serial number, issuer, validity window, subject, public key, and extensions. Everything a client cares about lives here.
2. The signature algorithm
An identifier naming the algorithm the CA used to sign the body — for example SHA-256 with RSA, or ECDSA with SHA-384. It appears here a second time (it's also inside the body) so a client can detect tampering with the algorithm choice itself.
3. The signature value
The actual digital signature: the CA hashed the entire body and signed that hash with its private key. A client recomputes the hash and verifies it against the CA's public key. If they match, the body hasn't been altered and a trusted CA really issued it.
Notice that the signature is over the body, not over itself — the CA signs the tbsCertificate and then appends the signature. This is exactly why a chain works: each certificate's body is signed by the key in the certificate above it, up to a trusted root. Our guide to the SSL certificate chain walks through how those signatures link together.
The core fields, one by one
Inside the body, these are the fields you'll see in any certificate viewer or OpenSSL dump:
| Field | What it holds |
|---|---|
| Version | The X.509 version. Almost always v3, which is what enables extensions. |
| Serial Number | A unique, CA-assigned identifier for this certificate. It's how a CA references the certificate in revocation lists. |
| Signature Algorithm | The algorithm the CA used to sign — e.g. sha256WithRSAEncryption or ecdsa-with-SHA384. |
| Issuer | The distinguished name (DN) of the CA that issued the certificate — country, organization, and common name of the issuing CA. |
| Validity | A notBefore and notAfter date. Outside this window the certificate is invalid. |
| Subject | The DN of the entity the certificate is for. For a DV website certificate this may be little more than the Common Name. |
| Subject Public Key Info | The public key being certified, plus its algorithm (RSA or ECDSA) and parameters — the whole reason the certificate exists. |
| Extensions | The v3 add-on fields (SAN, key usage, and more), covered in the next section. |
The validity window is shrinking
The notBefore/notAfter dates are getting closer together. Under CA/Browser Forum rules, maximum certificate lifetimes are stepping down over the next few years — see our explainer on the 199-day certificate limit for the full timeline and what it means for renewal.
The Subject and Issuer are both written as a Distinguished Name (DN) — an ordered set of attributes such as CN (common name), O (organization), OU (organizational unit), and C (country). The richness of the Subject DN is what distinguishes validation levels: a DV certificate carries little beyond the hostname, while OV and EV certificates include verified organization details. Our certificate types guide covers what each level puts in the Subject.
X.509 v3 extensions: where the real work happens
The fixed fields above can't express everything a modern certificate needs to say, so version 3 added extensions: optional, typed fields, each identified by an object identifier (OID). Every extension carries a critical flag — if an extension is marked critical and the client doesn't understand it, the client must reject the certificate rather than ignore the field. These are the extensions that matter for web certificates:
Subject Alternative Name (SAN)
The list of identities the certificate covers — DNS hostnames, IP addresses, or email addresses. This is the field browsers check to decide whether a certificate matches the site you're visiting. A multi-domain or wildcard certificate is simply one with multiple entries here.
Key Usage & Extended Key Usage
Key Usage restricts what the key may do at a low level (digital signature, key encipherment, certificate signing). Extended Key Usage (EKU) names higher-level purposes — serverAuth for TLS servers, clientAuth, code signing, or email protection. The EKU is what makes a certificate "a TLS certificate" versus a code-signing one.
Basic Constraints
States whether the certificate is a CA (allowed to sign other certificates) or an end-entity leaf. On a CA certificate it's marked critical and often caps how deep the chain below it can go. This is the field that stops a leaf certificate from impersonating a CA.
Authority & Subject Key Identifiers
Short fingerprints that link a certificate to its issuer's key (AKI) and identify its own key (SKI). Clients use them to assemble the chain quickly, matching each certificate to the one that signed it without guessing.
CRL Distribution Points & Authority Info Access
Where to check whether the certificate has been revoked: a URL for the CRL, and an OCSP responder URL plus the issuing CA's certificate location in Authority Information Access. Our guide to certificate revocation explains how clients use these.
SAN vs Common Name: why CN no longer matches the hostname
For years, the hostname lived in the Common Name (CN) attribute of the Subject DN, and clients matched it against the site you were visiting. That worked, but it was a hack: CN is a single free-text field with no type, so it couldn't cleanly express multiple names or distinguish a hostname from a person's name. Both the IETF and the CA/Browser Forum deprecated using CN for hostname matching in favor of the typed, multi-valued Subject Alternative Name extension.
Modern browsers ignore the CN entirely
Chrome stopped honoring the Common Name for hostname matching back in 2017, and other browsers followed. Today a certificate must list every hostname in its SAN extension — the CA/Browser Forum Baseline Requirements mandate it. A certificate that names a host only in its CN, with no SAN, will fail to validate no matter what the CN says. The CN may still appear for human-readable display, but it carries no weight in the match.
The practical takeaway when you generate a request: make sure every name you need is in the SAN. When you create a certificate signing request (CSR), list all hostnames as SAN entries rather than relying on the Common Name — the CA copies those into the issued certificate's SAN extension. How many names you can put there is a product question rather than a format one: a single-name certificate carries one, a wildcard covers one level of subdomains, and a multi-domain certificate holds a list. The SSL certificate range sets out which coverage each type gives you before you write the CSR.
What does a public CA have to add in 2026?
RFC 5280 describes what an X.509 certificate may contain, and it is permissive: extensions are optional, validity has no ceiling, and nothing forces a Subject Alternative Name. A publicly trusted certificate lives under a second, stricter rulebook — the CA/Browser Forum Baseline Requirements — and that is the one browsers actually enforce. This gap is why a certificate can be flawless X.509 and still be refused by every browser on the internet.
As of August 2026, four requirements shape what you will see when you dump a certificate from a public CA. A SAN is mandatory, and has been since 2012. The notAfter date can sit at most 200 days after issuance, the first step of a schedule that drops the maximum to 100 days on 15 March 2027 and 47 days on 15 March 2029 — our guide to the certificate lifetime changes covers the full timeline. The Extended Key Usage must name serverAuth, which is the field that makes it a TLS certificate rather than a code-signing one.
The fourth is the one most field-by-field explainers still omit. Open a current certificate and you will find an extension holding embedded Signed Certificate Timestamps — receipts proving the certificate was published to public Certificate Transparency logs before it was issued. Chrome wants at least two SCTs from distinct logs when a certificate's lifetime is 180 days or less, and three when it is longer. A certificate without them is treated as untrusted no matter how good its signature is, so in practice the CT extension is now as load-bearing as the SAN.
How to read a certificate yourself
Everything above is visible with one command. To decode a certificate file into human-readable form, point OpenSSL at it:
openssl x509 -in certificate.crt -noout -text
That prints the version, serial number, signature algorithm, issuer, validity dates, subject, public key, and every extension — including the full SAN list. To inspect what a live server is actually serving, connect to it directly:
openssl s_client -connect example.com:443 -servername example.com
Your browser shows the same structure through the padlock menu, and so do online checkers. For the complete set of inspection and conversion commands, keep our OpenSSL commands cheat sheet handy — it covers reading, verifying, and converting certificates between formats.
How an X.509 certificate is stored on disk
One last point of confusion worth clearing up: the X.509 structure and the file format it's saved in are two different things. The logical structure is always encoded with a scheme called DER (Distinguished Encoding Rules), which turns the fields into a precise binary form. What changes is the container around that binary:
- PEM wraps the DER bytes in Base64 text between
-----BEGIN CERTIFICATE-----markers — the most common format on Linux servers. - DER stores the raw binary directly, common in Java and Windows contexts.
- PKCS#12 (PFX) bundles the certificate, its chain, and the private key together in one password-protected file.
The certificate inside is the same X.509 v3 object in every case — only the packaging differs. Our certificate file formats guide goes deep on PEM, DER, PFX, and P7B and shows how to convert between them. And if you're still deciding which certificate to request in the first place, our walkthrough on which SSL certificate you need maps validation levels and coverage to real use cases.
Putting it together
An X.509 certificate is a signed binding of a public key to an identity, structured as a body plus a CA signature, enriched by v3 extensions, and stored in a PEM, DER, or PFX container. Once you can name the fields and read the SAN, a certificate stops being an opaque blob and becomes something you can verify at a glance.
Need one of these for your own domain?
Once the fields make sense, choosing a certificate comes down to two questions: which names belong in the SAN, and how much identity you want in the Subject. My-SSL issues certificates through Certum, a publicly trusted CA, so everything described on this page — the mandatory SAN, the serverAuth EKU, the embedded SCTs — is filled in for you at issuance. You can compare validation levels and coverage across the SSL certificate range.