====== Scenarij 3.2: Izdajanje odjemalskega certifikata ======
**Kategorija:** [[.:start|Izdajanje certifikatov]] \\
**Kompleksnost:** ⭐⭐⭐ (Srednje-visoka) \\
**Predpogoji:** CSR na voljo, Intermediate-CA \\
**Predviden čas:** 10-15 minut
----
===== Opis =====
Ta scenarij opisuje izdajanje **odjemalskega certifikata** za mTLS (Mutual TLS) avtentikacijo. Odjemalski certifikati omogočajo avtentikacijo odjemalcev pri strežnikih brez uporabe gesel.
**Primeri uporabe:**
* mTLS avtentikacija API-jev
* Avtentikacija IoT naprav
* Avtentikacija uporabnikov v podjetju
* Avtentikacija mikrostoritev
----
===== Primer kode (C#) =====
using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
using var ctx = PqCryptoContext.Initialize();
var caCert = ctx.LoadCertificate("user-ca.crt.pem");
var caKey = ctx.LoadPrivateKey("user-ca.key.pem", "CaPassword!");
var csr = ctx.LoadCertificateRequest(File.ReadAllText("client.csr.pem"));
// Izdajanje odjemalskega certifikata
var clientCert = ctx.IssueCertificate(
csr,
issuerCert: caCert,
issuerKey: caKey,
serialNumber: ctx.GenerateSerialNumber(),
validDays: 365,
extensions: new ExtBuilder()
.BasicConstraints(ca: false, critical: true)
// Key Usage: Samo digitalSignature!
.KeyUsage(KeyUsageFlags.DigitalSignature, critical: true)
// Extended Key Usage: Client Auth
.ExtendedKeyUsage(ExtKeyUsage.ClientAuth)
.SubjectKeyIdentifier(csr.PublicKey)
.AuthorityKeyIdentifier(caCert)
.Build()
);
clientCert.ToPemFile("client.crt.pem");
----
===== Razlika od strežniškega certifikata =====
^ Lastnost ^ Strežniški certifikat ^ Odjemalski certifikat ^
| Extended Key Usage | serverAuth | clientAuth |
| Key Usage | digitalSignature + keyEncipherment | samo digitalSignature |
| Subject Alt Name | DNS imena | E-pošta ali UPN (opcijsko) |
| Tipična veljavnost | 1 leto | 1-2 leti |
----
===== Povezani scenariji =====
^ Povezava ^ Scenarij ^ Opis ^
| **Predpogoj** | [[sl:int:pqcrypt:szenarien:csr:csr_client|2.2 Client-CSR]] | Ustvarjanje CSR |
| **Naslednji korak** | [[sl:int:pqcrypt:szenarien:tls:mtls_setup|10.2 mTLS nastavitev]] | Namestitev certifikata |
| **Povezano** | [[.:server_cert|3.1 Strežniški certifikat]] | Za mTLS strežnik |
----
<< [[.:server_cert|← 3.1 Strežniški certifikat]] | [[.:start|↑ Pregled certifikatov]] | [[.:codesign_cert|3.3 Code-Signing certifikat →]] >>
{{tag>scenarij certifikat odjemalec mtls avtentikacija}}
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//