====== 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//