====== Szenario 2.2: Client-CSR erstellen ====== **Kategorie:** [[.:start|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** | [[de:int:pqcrypt:szenarien:zertifikate:client_cert|3.2 Client-Zertifikat]] | CSR von CA signieren | | **Verwandt** | [[de:int:pqcrypt:szenarien:authentifizierung:mtls_client_auth|9.1 mTLS Client-Auth]] | Zertifikat verwenden | | **Alternativ** | [[.:csr_server|2.1 Server-CSR]] | Für Server | ---- << [[.:csr_server|← 2.1 Server-CSR]] | [[.:start|↑ CSR-Übersicht]] | [[.:csr_multi_san|2.3 Multi-SAN CSR →]] >> {{tag>szenario csr client mtls authentifizierung}} ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//