====== Scenarij 2.2: Kreiranje klijentskog CSR ====== **Kategorija:** [[.:start|Zahtjevi za certifikat (CSR)]] \\ **Složenost:** ⭐⭐ (Srednja) \\ **Preduvjeti:** Par ključeva dostupan \\ **Procijenjeno vrijeme:** 5-10 minuta ---- ===== Opis ===== Ovaj scenarij opisuje kreiranje **Certificate Signing Request (CSR)** za klijentski certifikat. Klijentski certifikati koriste se za mTLS autentifikaciju, Smart Card prijavu ili API pristup. **Što se kreira:** * ML-DSA-65 par ključeva * CSR s klijentskim DN i ekstenzijama * Extended Key Usage: clientAuth **Slučajevi uporabe:** * mTLS API autentifikacija * VPN pristup * Smart Card / PIV * Komunikacija između servisa ---- ===== Razlika Server vs. Klijent CSR ===== ^ Aspekt ^ Server-CSR ^ Klijent-CSR ^ | Extended Key Usage | serverAuth | clientAuth | | Subject | DNS ime (CN) | Ime korisnika/servisa | | SAN | DNS imena, IP-ovi | E-mail, UPN | | Key Usage | digitalSignature, keyEncipherment | digitalSignature | ---- ===== Primjer koda (C#) ===== using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; using var ctx = PqCryptoContext.Initialize(); // Par ključeva za klijenta using var clientKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65); // DN za korisnika ili servis var dn = new DnBuilder() .AddCN("Ivan Horvat") // ili ime servisa .AddO("Example d.o.o.") .AddOU("Razvoj") .AddC("HR") .AddEmail("ivan.horvat@example.com") .Build(); // Ekstenzije za klijentski certifikat var extensions = new ExtBuilder() .SubjectAlternativeName(new[] { "email:ivan.horvat@example.com", "upn:ivan.horvat@example.local" // Windows UPN }) .KeyUsage(KeyUsageFlags.DigitalSignature) .ExtendedKeyUsage(ExtKeyUsage.ClientAuth) .Build(); // Kreiranje CSR var csr = ctx.CreateCertificateRequest(clientKey, dn, extensions); // Spremanje File.WriteAllText("client.csr.pem", csr.ToPem()); File.WriteAllText("client.key.pem", clientKey.ToEncryptedPem("ClientPassword!")); Console.WriteLine("Klijentski CSR kreiran"); Console.WriteLine($"Subject: {csr.Subject}"); ---- ===== CSR za servisni račun ===== Za komunikaciju između servisa: var dn = new DnBuilder() .AddCN("payment-service") .AddO("Example d.o.o.") .AddOU("Mikroservisi") .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 klijente ==== ^ OID ^ Naziv ^ Uporaba ^ | 1.3.6.1.5.5.7.3.2 | clientAuth | mTLS klijent | | 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 (opcionalno) | ---- ===== Povezani scenariji ===== ^ Povezanost ^ Scenarij ^ Opis ^ | **Sljedeći korak** | [[hr:int:pqcrypt:szenarien:zertifikate:client_cert|3.2 Klijentski certifikat]] | Potpisivanje CSR od CA | | **Povezano** | [[hr:int:pqcrypt:szenarien:authentifizierung:mtls_client_auth|9.1 mTLS Client-Auth]] | Korištenje certifikata | | **Alternativa** | [[.:csr_server|2.1 Server-CSR]] | Za server | ---- << [[.:csr_server|← 2.1 Server-CSR]] | [[.:start|↑ Pregled CSR]] | [[.:csr_multi_san|2.3 Multi-SAN CSR →]] >> {{tag>scenarij csr klijent mtls autentifikacija}} ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//