====== 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//