Scenarij 2.2: Kreiranje klijentskog CSR

Kategorija: 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 3.2 Klijentski certifikat Potpisivanje CSR od CA
Povezano 9.1 mTLS Client-Auth Korištenje certifikata
Alternativa 2.1 Server-CSR Za server

« ← 2.1 Server-CSR | ↑ Pregled CSR | 2.3 Multi-SAN CSR → »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: 30.01.2026. u 00:19