Scenario 3.5: Emettere certificato Wildcard

Categoria: Emettere certificati
Complessità: Alta
Prerequisiti: Controllo dominio, Intermediate-CA
Tempo stimato: 15-20 minuti


Descrizione

Questo scenario descrive l'emissione di un certificato Wildcard (*.example.com). I certificati Wildcard proteggono tutti i sottodomini di un dominio con un singolo certificato.

Vantaggi:

  • Un certificato per tutti i sottodomini
  • Gestione semplificata
  • Più conveniente

Svantaggi:

  • Rischio maggiore in caso di compromissione
  • Non copre il dominio root
  • Solo un livello

Regole Wildcard

Pattern Copre NON copre
*.example.com www.example.com, api.example.com example.com, sub.api.example.com
*.api.example.com v1.api.example.com api.example.com

Importante: *.example.com NON copre example.com (senza sottodominio)! Aggiungere sempre entrambi come SAN.


Esempio codice (C#)

using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
 
using var ctx = PqCryptoContext.Initialize();
 
var caCert = ctx.LoadCertificate("intermediate-ca.crt.pem");
var caKey = ctx.LoadPrivateKey("intermediate-ca.key.pem", "CaPassword!");
 
// Schlüsselpaar für Wildcard
using var wildcardKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65);
 
var dn = new DnBuilder()
    .AddCN("*.example.com")
    .AddO("Example GmbH")
    .AddC("DE")
    .Build();
 
// CSR erstellen
var csr = ctx.CreateCertificateRequest(
    wildcardKey, dn,
    new ExtBuilder()
        // Wildcard + Root-Domain
        .SubjectAlternativeName(new[] {
            "dns:*.example.com",
            "dns:example.com"
        })
        .Build()
);
 
// Wildcard-Zertifikat ausstellen
var wildcardCert = ctx.IssueCertificate(
    csr,
    issuerCert: caCert,
    issuerKey: caKey,
    serialNumber: ctx.GenerateSerialNumber(),
    validDays: 365,
    extensions: new ExtBuilder()
        .BasicConstraints(ca: false, critical: true)
        .KeyUsage(KeyUsageFlags.DigitalSignature | KeyUsageFlags.KeyEncipherment)
        .ExtendedKeyUsage(ExtKeyUsage.ServerAuth)
        .SubjectKeyIdentifier(csr.PublicKey)
        .AuthorityKeyIdentifier(caCert)
        .CrlDistributionPoint("http://crl.example.com/intermediate.crl")
        .Build()
);
 
wildcardCert.ToPemFile("wildcard.crt.pem");
wildcardKey.ToEncryptedPemFile("wildcard.key.pem", "SecurePassword!");

Wildcard multi-livello

Per più livelli di sottodominio combinare più wildcard:

.SubjectAlternativeName(new[] {
    "dns:example.com",
    "dns:*.example.com",          // www, api, app, etc.
    "dns:*.dev.example.com",      // dev1.dev, dev2.dev, etc.
    "dns:*.staging.example.com"   // staging environments
})

Note di sicurezza

Rischi dei certificati Wildcard:

  • Una compromissione interessa TUTTI i sottodomini
  • La chiave privata è necessaria in più luoghi
  • La revoca interessa tutti i servizi

Best Practice:

  • Conservare la chiave privata centralmente (HSM)
  • Validità breve (max. 1 anno)
  • Certificati Wildcard separati per Prod/Dev/Staging
  • Monitoraggio per tutti i sottodomini

Scenari correlati

Relazione Scenario Descrizione
Alternativa 3.1 Certificato server Certificato singolo
Alternativa 2.3 CSR Multi-SAN SAN espliciti
Passo successivo 10.1 Server TLS Deployment

« ← 3.4 Certificato S/MIME | ↑ Panoramica certificati | 4. Gestire certificati → »


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

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