====== Scenarij 2.2: Ustvarjanje odjemalčevega CSR ====== **Kategorija:** [[.:start|Zahteve za certifikate (CSR)]] \\ **Kompleksnost:** 2/5 (Srednja) \\ **Predpogoji:** Par ključev na voljo \\ **Ocenjeni čas:** 5-10 minut ---- ===== Opis ===== Ta scenarij opisuje ustvarjanje **Certificate Signing Request (CSR)** za odjemalčev certifikat. Odjemalčevi certifikati se uporabljajo za mTLS-overitev, prijavo s pametno kartico ali dostop do API-ja. **Kaj se ustvari:** * ML-DSA-65 par ključev * CSR z odjemalčevim DN in razširitvami * Extended Key Usage: clientAuth **Primeri uporabe:** * mTLS API-overitev * Dostop VPN * Pametna kartica / PIV * Storitev-do-storitve komunikacija ---- ===== Razlika med strežniškim in odjemalčevim CSR ===== ^ Vidik ^ Strežniški CSR ^ Odjemalčev CSR ^ | Extended Key Usage | serverAuth | clientAuth | | Subject | DNS-ime (CN) | Ime uporabnika/storitve | | SAN | DNS-imena, IP-ji | E-pošta, UPN | | Key Usage | digitalSignature, keyEncipherment | digitalSignature | ---- ===== Primer kode (C#) ===== using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; using var ctx = PqCryptoContext.Initialize(); // Par ključev za odjemalca using var clientKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65); // DN za uporabnika ali storitev var dn = new DnBuilder() .AddCN("Janez Novak") // ali ime storitve .AddO("Example d.o.o.") .AddOU("Razvoj") .AddC("SI") .AddEmail("janez.novak@example.com") .Build(); // Razširitve za odjemalčev certifikat var extensions = new ExtBuilder() .SubjectAlternativeName(new[] { "email:janez.novak@example.com", "upn:janez.novak@example.local" // Windows UPN }) .KeyUsage(KeyUsageFlags.DigitalSignature) .ExtendedKeyUsage(ExtKeyUsage.ClientAuth) .Build(); // Ustvarjanje CSR var csr = ctx.CreateCertificateRequest(clientKey, dn, extensions); // Shranjevanje File.WriteAllText("client.csr.pem", csr.ToPem()); File.WriteAllText("client.key.pem", clientKey.ToEncryptedPem("OdjemalčevoGeslo!")); Console.WriteLine("Odjemalčev CSR ustvarjen"); Console.WriteLine($"Subject: {csr.Subject}"); ---- ===== CSR za storitveni račun ===== Za storitev-do-storitve komunikacijo: var dn = new DnBuilder() .AddCN("payment-service") .AddO("Example d.o.o.") .AddOU("Mikrostoritve") .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(); ---- ===== Parametri ===== ==== Extended Key Usage za odjemalce ==== ^ OID ^ Ime ^ Uporaba ^ | 1.3.6.1.5.5.7.3.2 | clientAuth | mTLS odjemalec | | 1.3.6.1.4.1.311.20.2.2 | smartcardLogon | Windows pametna kartica | | 1.3.6.1.5.5.7.3.4 | emailProtection | S/MIME (opcijsko) | ---- ===== Povezani scenariji ===== ^ Povezava ^ Scenarij ^ Opis ^ | **Naslednji korak** | [[sl:int:pqcrypt:szenarien:zertifikate:client_cert|3.2 Odjemalčev certifikat]] | Podpis CSR s strani CA | | **Povezano** | [[sl:int:pqcrypt:szenarien:authentifizierung:mtls_client_auth|9.1 mTLS Client-Auth]] | Uporaba certifikata | | **Alternativa** | [[.:csr_server|2.1 Strežniški CSR]] | Za strežnike | ---- << [[.:csr_server|2.1 Strežniški CSR]] | [[.:start|Pregled CSR]] | [[.:csr_multi_san|2.3 Multi-SAN CSR]] >> {{tag>scenarij csr odjemalec mtls overitev}} ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//