Inhaltsverzeichnis
Scenarij 2.3: Kreiranje Multi-SAN CSR
Kategorija: Zahtjevi za certifikat (CSR)
Složenost: ⭐⭐⭐ (Srednje-visoka)
Preduvjeti: Par ključeva dostupan
Procijenjeno vrijeme: 10-15 minuta
Opis
Ovaj scenarij opisuje kreiranje CSR-a s više Subject Alternative Names (SAN). Ovo je potrebno za certifikate koji trebaju osigurati više domena, poddomena ili IP adresa.
Slučajevi uporabe:
- Multi-domain certifikati (SAN certifikati)
- Wildcard + eksplicitne domene kombinirano
- Interna + eksterna imena
- Load balancer s više backenda
SAN tipovi
| Tip | GeneralName Tag | Primjer | Uporaba |
|---|---|---|---|
| DNS | dNSName (2) | www.example.com | Web stranice, API-ji |
| IP | iPAddress (7) | 192.168.1.100 | Interni servisi |
| rfc822Name (1) | admin@example.com | S/MIME | |
| URI | uniformResourceIdentifier (6) | https://example.com | SAML, OIDC |
| UPN | otherName (0) | user@domain.local | Windows Auth |
Primjer koda (C#)
using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; using var ctx = PqCryptoContext.Initialize(); using var key = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65); var dn = new DnBuilder() .AddCN("example.com") // Primarna domena .AddO("Example d.o.o.") .AddC("HR") .Build(); // Multi-SAN s različitim tipovima var extensions = new ExtBuilder() .SubjectAlternativeName(new[] { // DNS imena "dns:example.com", "dns:www.example.com", "dns:api.example.com", "dns:app.example.com", "dns:*.dev.example.com", // Wildcard za dev // IP adrese (za interne pristupe) "ip:10.0.0.100", "ip:192.168.1.50", // IPv6 "ip:2001:db8::1" }) .KeyUsage(KeyUsageFlags.DigitalSignature | KeyUsageFlags.KeyEncipherment) .ExtendedKeyUsage(ExtKeyUsage.ServerAuth) .Build(); var csr = ctx.CreateCertificateRequest(key, dn, extensions); // Ispis svih SAN-ova Console.WriteLine("Subject Alternative Names:"); foreach (var san in csr.SubjectAlternativeNames) { Console.WriteLine($" - {san}"); } File.WriteAllText("multi-san.csr.pem", csr.ToPem());
Kombinacija Wildcard + Explicit
var extensions = new ExtBuilder() .SubjectAlternativeName(new[] { "dns:example.com", // Root domena (wildcard ovo ne pokriva!) "dns:*.example.com", // Sve poddomene 1. razine "dns:*.api.example.com", // API poddomene "dns:legacy.old-domain.com" // Alternativna domena }) .Build();
Važno: Wildcards (*.example.com) pokrivaju samo jednu razinu i ne pokrivaju samu root domenu! Stoga uvijek navedite example.com I *.example.com.
Kubernetes / Cloud-Native
var extensions = new ExtBuilder() .SubjectAlternativeName(new[] { // Kubernetes Service DNS "dns:my-service", "dns:my-service.default", "dns:my-service.default.svc", "dns:my-service.default.svc.cluster.local", // Headless Service (Pod DNS) "dns:*.my-service.default.svc.cluster.local", // Eksterna Ingress domena "dns:api.example.com" }) .Build();
Ograničenja i najbolje prakse
| Aspekt | Preporuka | Obrazloženje |
|---|---|---|
| Broj SAN-ova | Maks. 100 | Performanse, veličina certifikata |
| Wildcard razine | Samo 1 razina | RFC 6125 ograničenje |
| IP adrese | Samo ako je potrebno | IP-ovi se češće mijenjaju |
| Interna imena | Odvojeni certifikati | Sigurnosna separacija |
Povezani scenariji
| Povezanost | Scenarij | Opis |
|---|---|---|
| Sljedeći korak | 3.1 Serverski certifikat | Potpisivanje CSR |
| Alternativa | 3.5 Wildcard certifikat | Samo wildcard |
| Osnova | 2.1 Server-CSR | Jednostavan serverski CSR |
« ← 2.2 Klijentski CSR | ↑ Pregled CSR | 2.4 Obrada CSR → »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: 30.01.2026. u 00:20