X.509 ist ein ITU-T-Standard für digitale Zertifikate. Er beschreibt das Datenformat, in dem ein öffentlicher Schlüssel mit einer Identität verbunden und von einer Zertifizierungsstelle signiert wird. Die Version 3 des Standards von 1996 ist die Grundlage für TLS-Zertifikate im Internet; die Internet-Profile legt RFC 5280 fest.
Aufbau eines Zertifikats
Ein X.509-Zertifikat enthält unter anderem die Versionsnummer, eine eindeutige Seriennummer, den Namen des Ausstellers (Issuer), den Namen des Inhabers (Subject), den Gültigkeitszeitraum (notBefore/notAfter), den öffentlichen Schlüssel mit dem verwendeten Algorithmus sowie die digitale Signatur der Zertifizierungsstelle. Die Struktur wird mit ASN.1 beschrieben.
Formate: DER und PEM
Zertifikate existieren in zwei gängigen Kodierungen. DER ist die binäre Form, PEM die Base64-kodierte Variante mit Kopf- und Fußzeile -----BEGIN CERTIFICATE----- beziehungsweise -----END CERTIFICATE-----. Übliche Dateiendungen sind .crt, .cer, .pem und .der.
Wichtige Erweiterungen
- Subject Alternative Name (SAN): zusätzliche Domain- und E-Mail-Adressen; seit 2017 Pflicht in Chrome
- Basic Constraints: kennzeichnet Zertifizierungsstellen (
CA:TRUE) und begrenzt die Kettenlänge - Key Usage / Extended Key Usage: erlaubte Verwendungen wie Server-Authentifizierung oder Code-Signing
- CRL Distribution Points: Verweis auf die Sperrliste
Zertifikatskette
In der Praxis besteht eine Kette aus einem selbst signierten Root-Zertifikat, einem oder mehreren Zwischenzertifikaten und dem eigentlichen Endzertifikat. Der Client validiert die Kette bis zum vertrauenswürdigen Anker — kombiniert mit RSA- oder ECDSA-Signaturen.
Verwandte Grundlagen: PKI, Zertifizierungsstelle, Zertifikat, TLS-Handshake, Public Key, Private Key.