Categoria: Richieste di certificato (CSR)
Complessita: ⭐⭐ (Media)
Prerequisiti: Coppia di chiavi disponibile
Tempo stimato: 5-10 minuti
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:
Casi d'uso:
| 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 |
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}");
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();
| 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) |
| 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