====== Scenarij 3.5: Izdajanje Wildcard certifikata ======
**Kategorija:** [[.:start|Izdajanje certifikatov]] \\
**Kompleksnost:** ⭐⭐⭐⭐ (Visoka) \\
**Predpogoji:** Nadzor domene, Intermediate-CA \\
**Predviden čas:** 15-20 minut
----
===== Opis =====
Ta scenarij opisuje izdajanje **Wildcard certifikata** (''*.example.com''). Wildcard certifikati zaščitijo vse poddomene ene domene z enim samim certifikatom.
**Prednosti:**
* En certifikat za vse poddomene
* Enostavnejše upravljanje
* Stroškovno učinkoviteje
**Slabosti:**
* Višje tveganje pri kompromitaciji
* Ne pokriva korenske domene
* Samo ena raven
----
===== Pravila Wildcard =====
^ Vzorec ^ 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 |
**Pomembno:** ''*.example.com'' NE pokriva ''example.com'' (brez poddomene)! Vedno dodajte obe kot SAN.
----
===== Primer kode (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čev za Wildcard
using var wildcardKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65);
var dn = new DnBuilder()
.AddCN("*.example.com")
.AddO("Example GmbH")
.AddC("DE")
.Build();
// Ustvarjanje CSR
var csr = ctx.CreateCertificateRequest(
wildcardKey, dn,
new ExtBuilder()
// Wildcard + korenska domena
.SubjectAlternativeName(new[] {
"dns:*.example.com",
"dns:example.com"
})
.Build()
);
// Izdajanje 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!");
----
===== Večnivojski Wildcard =====
Za več ravni poddomen kombinirajte več Wildcardov:
.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 okolja
})
----
===== Varnostni nasveti =====
**Tveganja Wildcard certifikatov:**
* Kompromitacija prizadene VSE poddomene
* Zasebni ključ je potreben na več mestih
* Preklic prizadene vse storitve
**Najboljše prakse:**
* Centralno shranjevanje zasebnega ključa (HSM)
* Kratka veljavnost (maks. 1 leto)
* Ločeni Wildcard certifikati za Prod/Dev/Staging
* Nadzor za vse poddomene
----
===== Povezani scenariji =====
^ Povezava ^ Scenarij ^ Opis ^
| **Alternativa** | [[.:server_cert|3.1 Strežniški certifikat]] | Posamezen certifikat |
| **Alternativa** | [[sl:int:pqcrypt:szenarien:csr:csr_multi_san|2.3 Multi-SAN CSR]] | Eksplicitni SAN-i |
| **Naslednji korak** | [[sl:int:pqcrypt:szenarien:tls:server_setup|10.1 TLS strežnik]] | Namestitev |
----
<< [[.:smime_cert|← 3.4 S/MIME certifikat]] | [[.:start|↑ Pregled certifikatov]] | [[sl:int:pqcrypt:szenarien:verwaltung:start|4. Upravljanje certifikatov →]] >>
{{tag>scenarij certifikat wildcard poddomena tls}}
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//