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