====== Scenarij 3.5: Izdavanje Wildcard certifikata ======
**Kategorija:** [[.:start|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:**
* Jedan certifikat za sve poddomene
* Jednostavnije upravljanje
* Isplativije
**Nedostaci:**
* Viši rizik kod kompromitacije
* Ne pokriva root domenu
* Samo jedna razina
----
===== 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:**
* Centralno pohraniti privatni ključ (HSM)
* Kratka valjanost (maksimalno 1 godina)
* Odvojeni Wildcard certifikati za Prod/Dev/Staging
* Nadzor za sve poddomene
----
===== Povezani scenariji =====
^ Odnos ^ Scenarij ^ Opis ^
| **Alternativa** | [[.:server_cert|3.1 Poslužiteljski certifikat]] | Pojedinačni certifikat |
| **Alternativa** | [[hr:int:pqcrypt:szenarien:csr:csr_multi_san|2.3 Multi-SAN CSR]] | Eksplicitni SAN-ovi |
| **Sljedeći korak** | [[hr:int:pqcrypt:szenarien:tls:server_setup|10.1 TLS poslužitelj]] | Implementacija |
----
<< [[.:smime_cert|← 3.4 S/MIME certifikat]] | [[.:start|↑ Pregled certifikata]] | [[hr:int:pqcrypt:szenarien:verwaltung:start|4. Upravljanje certifikatima →]] >>
{{tag>scenarij certifikat wildcard poddomena tls}}
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//