Kategorie: Zertifikatsanträge (CSR)
Komplexität: ⭐⭐ (Mittel)
Voraussetzungen: Schlüsselpaar vorhanden
Geschätzte Zeit: 5-10 Minuten
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:
Anwendungsfälle:
| 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 |
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}");
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();
| 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) |
| 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