Skip to main content

    X.509 Certificates Explained: Fields, Extensions, and Structure

    An X.509 certificate is the data structure behind every SSL/TLS certificate. Learn its fields, v3 extensions, the role of SAN, and how to read one.

    MS
    My-SSL Security Team
    ·
    15 min read
    ·
    Published August 3, 2026
    ·
    Last updated August 3, 2026

    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.

    The anatomy of an X.509 certificate: a signed body, the algorithm that signed it, and the signature itselfA tall outer box represents the whole certificate and contains three stacked parts. The first and largest is the tbsCertificate, the body that gets signed, listing version, serial number, signature algorithm, issuer, validity with notBefore and notAfter, subject, subject public key info, and extensions. The extensions row is highlighted in gold because version 3 extensions carry most of the meaning in a modern certificate. Below the body sit two smaller parts: the signature algorithm identifier, repeated outside the body so tampering with the algorithm can be detected, and the signature value itself. An arrow curves from the body down to the signature value, labelled to show that the certificate authority hashes the entire body and signs that hash.One certificate = a body, plus a signature over that body1. tbsCertificate — "to be signed"Versionv3Serial Numberunique per CAIssuerthe CA's DNValiditynotBefore → notAfterSubjectwho it's forSubject Public Key Infothe key being certifiedExtensions (v3)SAN, Key Usage, EKU, Basic Constraints…2. Signature Algorithmrepeated outside the body3. Signature Valuethe CA's signatureCA hashesthe whole bodyand signs thathash
    The split matters: because the signature covers the body and not itself, each certificate in a chain can be signed by the key in the certificate above it.

    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:

    FieldWhat it holds
    VersionThe X.509 version. Almost always v3, which is what enables extensions.
    Serial NumberA unique, CA-assigned identifier for this certificate. It's how a CA references the certificate in revocation lists.
    Signature AlgorithmThe algorithm the CA used to sign — e.g. sha256WithRSAEncryption or ecdsa-with-SHA384.
    IssuerThe distinguished name (DN) of the CA that issued the certificate — country, organization, and common name of the issuing CA.
    ValidityA notBefore and notAfter date. Outside this window the certificate is invalid.
    SubjectThe 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 InfoThe public key being certified, plus its algorithm (RSA or ECDSA) and parameters — the whole reason the certificate exists.
    ExtensionsThe 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.

    How a browser matches a hostname: it reads the SAN extension and ignores the Common NameTwo lanes compare the same request for the site example.com. In the top lane, highlighted in gold, the certificate carries a Subject Alternative Name extension listing example.com and www.example.com. The browser reads the SAN, finds a match, and the connection succeeds. In the bottom lane the certificate has no SAN extension and names the host only in the Common Name of the subject. The browser does not fall back to the Common Name, so no name matches and the connection fails with the error ERR_CERT_COMMON_NAME_INVALID. A note records that Chrome removed the Common Name fallback in version 58 in 2017, and that the CA Browser Forum has required a Subject Alternative Name since 2012.Browsers match on SAN. The Common Name is not consulted.SAN extensionDNS: example.comDNS: www.example.combrowser readsexample.com matchesConnectsNo SANSubject CN =example.comno fallbacknothing to matchFailsCN_INVALIDChrome removed the Common Name fallback in Chrome 58 (2017); the CA/Browser Forum has required a SAN since 2012.
    This is why a self-signed certificate built from an old OpenSSL recipe fails in Chrome even though its Common Name looks correct — nothing is reading that field.

    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.

    What RFC 5280 permits versus what a publicly trusted certificate must contain in 2026Two columns compare the same certificate under two rule sets. The left column, RFC 5280, describes what the standard permits: extensions are optional, a Subject Alternative Name is recommended, validity has no fixed ceiling, no Extended Key Usage is required, and there is no transparency requirement. The right column, headed CA Browser Forum Baseline Requirements and highlighted in gold, lists what a publicly trusted certificate must actually carry as of August 2026: a Subject Alternative Name is mandatory, the notAfter date can be at most 200 days after issuance, the Extended Key Usage must include serverAuth, and embedded Signed Certificate Timestamps prove the certificate was logged to Certificate Transparency. A caption underneath notes that the standard sets the outer boundary while the Baseline Requirements decide what browsers will accept.The standard sets the outer limit. The Baseline Requirements set the bar.RFC 5280 permitsExtensions are optionalSAN recommended, not forcedNo ceiling on validityEKU optionalNo logging requirementA public CA must issueSAN is mandatoryevery hostname listed therenotAfter ≤ 200 dayssince 15 March 2026EKU includes serverAuthit is a TLS certificate or it isn'tEmbedded SCTsproof it was logged to CTA certificate can be perfectly valid X.509 and still be rejected by every browser on the internet.
    When people say a certificate is "invalid," they almost always mean it broke one of the rules on the right, not one of the rules on the left.

    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 same X.509 object inside three different file containers: PEM, DER and PKCS#12A single gold box in the centre represents the X.509 certificate encoded with Distinguished Encoding Rules, the binary form that never changes. Three containers are drawn around it. PEM wraps those bytes in Base64 text between BEGIN and END CERTIFICATE markers and is the usual format on Linux servers. DER stores the same bytes raw and is common in Java and Windows. PKCS#12, also called PFX, bundles the certificate together with its chain and the private key in one password-protected file. The point of the diagram is that converting between these formats repackages the certificate without changing the certificate itself.Same certificate, three wrappersX.509 structureDER-encoded bytesPEMBase64 text betweenBEGIN/END CERTIFICATEDERthe raw bytes,no wrapperPKCS#12 (PFX)certificate + chain +private key, encrypted
    Converting between these formats repackages the certificate. It does not reissue it, and the signature comes out the other side byte-identical.

    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.

    Frequently Asked Questions

    Get instant answers to common questions about SSL certificates and our services.

    Still Have Questions?

    Our SSL experts are available 24/7 to help with any questions about certificates, installation, or technical issues.

    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.