Inhaltsverzeichnis

Scenarij 3.5: Izdavanje Wildcard certifikata

Kategorija: Izdavanje certifikata
Složenost: ⭐⭐⭐⭐ (Visoka)
Preduvjeti: Kontrola domene, Intermediate-CA
Procijenjeno vrijeme: 15-20 minuta


Opis

Ovaj scenarij opisuje izdavanje Wildcard certifikata (*.example.com). Wildcard certifikati osiguravaju sve poddomene jedne domene s jednim certifikatom.

Prednosti:

Nedostaci:


Wildcard pravila

Uzorak Pokriva NE pokriva
*.example.com www.example.com, api.example.com example.com, sub.api.example.com
*.api.example.com v1.api.example.com api.example.com

Važno: *.example.com NE pokriva example.com (bez poddomene)! Uvijek dodajte oboje kao SAN.


Primjer koda (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!");
 
// Par ključeva za Wildcard
using var wildcardKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65);
 
var dn = new DnBuilder()
    .AddCN("*.example.com")
    .AddO("Example GmbH")
    .AddC("DE")
    .Build();
 
// Kreiranje CSR-a
var csr = ctx.CreateCertificateRequest(
    wildcardKey, dn,
    new ExtBuilder()
        // Wildcard + Root-domena
        .SubjectAlternativeName(new[] {
            "dns:*.example.com",
            "dns:example.com"
        })
        .Build()
);
 
// Izdavanje Wildcard certifikata
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!");

Višerazinski Wildcard

Za više razina poddomena kombinirajte više wildcarda:

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

Sigurnosne napomene

Rizici Wildcard certifikata:

  • Kompromitacija utječe na SVE poddomene
  • Privatni ključ potreban na više mjesta
  • Opoziv utječe na sve usluge

Najbolje prakse:


Povezani scenariji

Odnos Scenarij Opis
Alternativa 3.1 Poslužiteljski certifikat Pojedinačni certifikat
Alternativa 2.3 Multi-SAN CSR Eksplicitni SAN-ovi
Sljedeći korak 10.1 TLS poslužitelj Implementacija

« ← 3.4 S/MIME certifikat | ↑ Pregled certifikata | 4. Upravljanje certifikatima → »


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