Scenario 2.2: Creare CSR client

Categoria: Richieste di certificato (CSR)
Complessita: ⭐⭐ (Media)
Prerequisiti: Coppia di chiavi disponibile
Tempo stimato: 5-10 minuti


Descrizione

Questo scenario descrive la creazione di un Certificate Signing Request (CSR) per un certificato client. I certificati client vengono utilizzati per l'autenticazione mTLS, Smart Card Login o accesso API.

Cosa viene creato:

  • Coppia di chiavi ML-DSA-65
  • CSR con DN client e Extensions
  • Extended Key Usage: clientAuth

Casi d'uso:

  • Autenticazione API mTLS
  • Accesso VPN
  • Smart Card / PIV
  • Comunicazione Service-to-Service

Differenza Server vs. Client CSR

Aspetto CSR server CSR client
Extended Key Usage serverAuth clientAuth
Subject Nome DNS (CN) Nome utente/servizio
SAN Nomi DNS, IP E-Mail, UPN
Key Usage digitalSignature, keyEncipherment digitalSignature

Esempio di codice (C#)

using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
 
using var ctx = PqCryptoContext.Initialize();
 
// Coppia di chiavi per client
using var clientKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65);
 
// DN per utente o servizio
var dn = new DnBuilder()
    .AddCN("Mario Rossi")           // o nome servizio
    .AddO("Example SRL")
    .AddOU("Sviluppo")
    .AddC("IT")
    .AddEmail("mario.rossi@example.com")
    .Build();
 
// Extensions per certificato client
var extensions = new ExtBuilder()
    .SubjectAlternativeName(new[] {
        "email:mario.rossi@example.com",
        "upn:mario.rossi@example.local"  // Windows UPN
    })
    .KeyUsage(KeyUsageFlags.DigitalSignature)
    .ExtendedKeyUsage(ExtKeyUsage.ClientAuth)
    .Build();
 
// Creare CSR
var csr = ctx.CreateCertificateRequest(clientKey, dn, extensions);
 
// Salvare
File.WriteAllText("client.csr.pem", csr.ToPem());
File.WriteAllText("client.key.pem", clientKey.ToEncryptedPem("ClientPassword!"));
 
Console.WriteLine("CSR client creato");
Console.WriteLine($"Subject: {csr.Subject}");

CSR Service-Account

Per comunicazione Service-to-Service:

var dn = new DnBuilder()
    .AddCN("payment-service")
    .AddO("Example SRL")
    .AddOU("Microservices")
    .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 per client

OID Nome Utilizzo
1.3.6.1.5.5.7.3.2 clientAuth Client mTLS
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 (opzionale)

Scenari correlati

Relazione Scenario Descrizione
Passo successivo 3.2 Certificato client Firmare CSR dalla CA
Correlato 9.1 mTLS Client-Auth Utilizzare certificato
Alternativo 2.1 CSR server Per server

« ← 2.1 CSR server | ↑ Panoramica CSR | 2.3 CSR Multi-SAN → »


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

Zuletzt geändert: il 30/01/2026 alle 00:19