Inhaltsverzeichnis

Scenario 3.4: Emettere certificato S/MIME

Categoria: Emettere certificati
Complessità: Media
Prerequisiti: CSR con indirizzo e-mail
Tempo stimato: 10-15 minuti


Descrizione

Questo scenario descrive l'emissione di un certificato S/MIME per crittografia e firma e-mail. I certificati S/MIME consentono comunicazione e-mail sicura attraverso firme digitali e crittografia.

Funzioni:


Esempio codice (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("smime.csr.pem"));
 
// S/MIME-Zertifikat ausstellen
var smimeCert = ctx.IssueCertificate(
    csr,
    issuerCert: caCert,
    issuerKey: caKey,
    serialNumber: ctx.GenerateSerialNumber(),
    validDays: 365,
    extensions: new ExtBuilder()
        .BasicConstraints(ca: false, critical: true)
        // Key Usage für Signierung UND Verschlüsselung
        .KeyUsage(
            KeyUsageFlags.DigitalSignature |
            KeyUsageFlags.KeyEncipherment |
            KeyUsageFlags.DataEncipherment,
            critical: true
        )
        // Extended Key Usage: Email Protection
        .ExtendedKeyUsage(ExtKeyUsage.EmailProtection)
        // E-Mail-Adresse als SAN (PFLICHT für S/MIME!)
        .SubjectAlternativeName(new[] {
            "email:max.mustermann@example.com"
        })
        .SubjectKeyIdentifier(csr.PublicKey)
        .AuthorityKeyIdentifier(caCert)
        .Build()
);
 
smimeCert.ToPemFile("smime.crt.pem");
 
// PFX für E-Mail-Client-Import
var pfx = ctx.ExportToPfx(smimeCert, smimeKey, new[] { caCert }, "Password!");
File.WriteAllBytes("smime.pfx", pfx);

Tipi di certificato S/MIME

Tipo Validazione Utilizzo
Class 1 Controllo e-mail Personale, gratuito
Class 2 Verifica identità Business
Class 3 Verifica estesa Enterprise, qualificato

Dettagli Key Usage

Flag Utilizzo con S/MIME
digitalSignature Firmare e-mail
keyEncipherment Crittografare session key (RSA)
dataEncipherment Crittografare dati direttamente
nonRepudiation Firma legalmente valida (opzionale)

Import Outlook / Thunderbird

1. Doppio clic sul file PFX
2. Seguire assistente importazione
3. Inserire password
4. "Seleziona automaticamente archivio"
5. In Outlook: File → Opzioni → Centro protezione → Sicurezza e-mail

Scenari correlati

Relazione Scenario Descrizione
Correlato 8.1 Firmare documento E-mail come documento
Correlato 7.1 Crittografia ibrida Crittografia e-mail
Prerequisito 2.2 CSR Client CSR con e-mail

« ← 3.3 Code-Signing | ↑ Panoramica certificati | 3.5 Certificato Wildcard → »


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