Inhaltsverzeichnis

Scenarij 2.2: Ustvarjanje odjemalčevega CSR

Kategorija: 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:

Primeri uporabe:


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 3.2 Odjemalčev certifikat Podpis CSR s strani CA
Povezano 9.1 mTLS Client-Auth Uporaba certifikata
Alternativa 2.1 Strežniški CSR Za strežnike

« 2.1 Strežniški CSR | Pregled CSR | 2.3 Multi-SAN CSR »


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