Szenario 2.2: Client-CSR erstellen

Kategorie: Zertifikatsanträge (CSR)
Komplexität: ⭐⭐ (Mittel)
Voraussetzungen: Schlüsselpaar vorhanden
Geschätzte Zeit: 5-10 Minuten


Beschreibung

Dieses Szenario beschreibt die Erstellung eines Certificate Signing Request (CSR) für ein Client-Zertifikat. Client-Zertifikate werden für mTLS-Authentifizierung, Smart Card Login oder API-Zugriff verwendet.

Was wird erstellt:

  • ML-DSA-65 Schlüsselpaar
  • CSR mit Client-DN und Extensions
  • Extended Key Usage: clientAuth

Anwendungsfälle:

  • mTLS API-Authentifizierung
  • VPN-Zugang
  • Smart Card / PIV
  • Service-to-Service Kommunikation

Unterschied Server vs. Client CSR

Aspekt Server-CSR Client-CSR
Extended Key Usage serverAuth clientAuth
Subject DNS-Name (CN) Benutzer/Service-Name
SAN DNS-Namen, IPs E-Mail, UPN
Key Usage digitalSignature, keyEncipherment digitalSignature

Code-Beispiel (C#)

using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
 
using var ctx = PqCryptoContext.Initialize();
 
// Schlüsselpaar für Client
using var clientKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65);
 
// DN für Benutzer oder Service
var dn = new DnBuilder()
    .AddCN("Max Mustermann")           // oder Service-Name
    .AddO("Example GmbH")
    .AddOU("Entwicklung")
    .AddC("DE")
    .AddEmail("max.mustermann@example.com")
    .Build();
 
// Extensions für Client-Zertifikat
var extensions = new ExtBuilder()
    .SubjectAlternativeName(new[] {
        "email:max.mustermann@example.com",
        "upn:max.mustermann@example.local"  // Windows UPN
    })
    .KeyUsage(KeyUsageFlags.DigitalSignature)
    .ExtendedKeyUsage(ExtKeyUsage.ClientAuth)
    .Build();
 
// CSR erstellen
var csr = ctx.CreateCertificateRequest(clientKey, dn, extensions);
 
// Speichern
File.WriteAllText("client.csr.pem", csr.ToPem());
File.WriteAllText("client.key.pem", clientKey.ToEncryptedPem("ClientPassword!"));
 
Console.WriteLine("Client-CSR erstellt");
Console.WriteLine($"Subject: {csr.Subject}");

Service-Account CSR

Für Service-to-Service Kommunikation:

var dn = new DnBuilder()
    .AddCN("payment-service")
    .AddO("Example GmbH")
    .AddOU("Microservices")
    .Build();
 
var extensions = new ExtBuilder()
    .SubjectAlternativeName(new[] {
        "dns:payment-service.internal",
        "dns:payment-service.prod.svc.cluster.local"  // Kubernetes
    })
    .KeyUsage(KeyUsageFlags.DigitalSignature)
    .ExtendedKeyUsage(ExtKeyUsage.ClientAuth)
    .Build();

Parameter

Extended Key Usage für Clients

OID Name Verwendung
1.3.6.1.5.5.7.3.2 clientAuth mTLS Client
1.3.6.1.4.1.311.20.2.2 smartcardLogon Windows Smart Card
1.3.6.1.5.5.7.3.4 emailProtection S/MIME (optional)

Verwandte Szenarien

Beziehung Szenario Beschreibung
Nächster Schritt 3.2 Client-Zertifikat CSR von CA signieren
Verwandt 9.1 mTLS Client-Auth Zertifikat verwenden
Alternativ 2.1 Server-CSR Für Server

« ← 2.1 Server-CSR | ↑ CSR-Übersicht | 2.3 Multi-SAN CSR → »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: den 29.01.2026 um 15:12