Zurück zur Startseite

X.509-Zertifikate: ASN.1 und Generierung

Der Artikel zerlegt die Struktur von X.509-Zertifikaten in ASN.1, Validierungstypen (DV/OV/EV), Kettenshierarchie. Befehle zur Generierung mit openssl (ECC/RSA), keytool und certbot werden bereitgestellt. Für Senior-Dev: OID-Erweiterungen, DER/BER-Kodierung.

X.509-Leitfaden: von ASN.1 zu ECC-Schlüsseln
Advertisement 728x90

X.509-Zertifikate: Struktur, Typen und Erstellung für Entwickler

X.509-Zertifikate bilden das Rückgrat der Public Key Infrastructure (PKI) und enthalten öffentliche Schlüssel sowie Angaben zum Betreff. Der Standard geht auf X.500 DAP zurück, das heute weitgehend durch LDAP ersetzt wurde. Alle Strukturen sind in ASN.1 definiert – einer Metasprache zur Daten-Serialisierung – mit Kodierung nach den Regeln BER, CER, DER aus X.690 oder XER.

Grundstruktur von TBSCertificate:

Certificate ::= SEQUENCE {
    tbsCertificate TBSCertificate,
    signatureAlgorithm AlgorithmIdentifier,
    signatureValue BIT STRING
}

TBSCertificate ::= SEQUENCE {
    version [0] EXPLICIT Version DEFAULT v1,
    serialNumber CertificateSerialNumber,
    signature AlgorithmIdentifier,
    issuer Name,
    validity Validity,
    subject Name,
    subjectPublicKeyInfo SubjectPublicKeyInfo,
    issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL
}

In ASN.1 entspricht SEQUENCE einer Struktur in C. Für Syntax-Details siehe X.680 (2008). Zertifikate dienen hauptsächlich als Behälter für öffentliche Schlüssel. Sie bestätigen auch Domain-Besitz oder Identität, wobei die Zuverlässigkeit variiert.

Google AdInline article slot

Zertifikatshierarchie und Typen

Vertrauenskette vom Root-CA bis zum Endentitäts-Zertifikat.

  • Root: Issuer = Subject, basicConstraints.cA = TRUE.
  • Intermediate: Signiert von höherer CA, baut die Kette auf.
  • Endentität: Signiert keine anderen; für Endsysteme genutzt.

Nach Validierungsstufe:

  • DV (Domain Validated): Automatisierte Domain-Prüfung per E-Mail oder HTTP-Challenge.
  • OV (Organization Validated): Überprüfung von WHOIS, Registrierung, Kontakten – dauert ein paar Tage.
  • EV (Extended Validation): Vollständiger Geschäftsaudit, exklusive Domain-Rechte, Vollmacht. Wird als grüne Leiste mit Firmennamen angezeigt. Erfordert jurisdictionOfIncorporationCountryName, businessCategory, serialNumber im Subject.

Andere Typen:

Google AdInline article slot
  • Multi-Domain: SAN (subjectAltName) für mehrere Domains.
  • Wildcard: CN=*.example.com für Subdomains.
  • Qualified: Persönliche Zertifikate nach RFC 3739 mit givenName, dateOfBirth, countryOfCitizenship.

Zertifikate erstellen

Selbstsigniert mit ECC

Elliptic Curve Cryptography (ECC) ist RSA in CPU-Effizienz und Schlüssellänge überlegen, aber TLS <1.2-Unterstützung variiert.

Erzeuge secp521r1-Privatschlüssel:

openssl ecparam -name secp521r1 -genkey -param_enc explicit -out private-key.pem

CSR mit SHA256:

Google AdInline article slot
openssl req -new -sha256 -key private-key.pem -out server.csr -days 730

Selbstsignieren:

openssl x509 -req -sha256 -days 365 -in server.csr -signkey private-key.pem -out public.crt

Prüfen:

openssl x509 -text -noout -in public.crt

Hilfe: openssl -help, openssl x509 -help.

Mit Java keytool

RSA 2048:

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048

Zu PKCS12 konvertieren:

keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -deststoretype pkcs12

Ausgabe enthält SubjectKeyIdentifier (OID 2.5.29.14, nicht-kritisch nach RFC 5280).

Let's Encrypt (DV)

Certbot installieren und Zertifikate holen:

sudo certbot certonly --standalone -d example.com -d www.example.com

(Für Gentoo: sudo emerge certbot; Debian: sudo apt-get install certbot -t stretch-backports; Fedora: sudo dnf install certbot).

Erweiterungen und Analyse

Zertifikate nutzen OIDs zur Identifikation: subjectKeyIdentifier ::= KeyIdentifier. Vollständige Analyse mit openssl x509 -text. Ketten bauen Vertrauen auf: root → intermediates → leaf.

Wichtige Erkenntnisse:

  • X.509 nutzt ASN.1: SEQUENCE wie Structs, DER/BER-Kodierung.
  • Typen: DV/OV/EV nach Validierung, Wildcard/SAN für Flexibilität.
  • Erstellung: openssl für ECC/RSA, keytool für JKS/PKCS12, certbot für Let's Encrypt.
  • Kette: root (cA=TRUE) → intermediates → Endentität.

Ketten debuggen mit openssl s_client -connect host:443 -showcerts. Standards wie X.680/690, RFC 5280/3739 gewährleisten PKI-Interoperabilität.

— Editorial Team

Advertisement 728x90

Weiterlesen