Kategorija: Izdajanje certifikatov
Kompleksnost: ⭐⭐⭐ (Srednje-visoka)
Predpogoji: CSR na voljo, Intermediate-CA
Predviden čas: 10-15 minut
Ta scenarij opisuje izdajanje TLS strežniškega certifikata s strani Intermediate-CA. Certifikat omogoča HTTPS šifriranje za spletne strežnike, API-je in druge s TLS zaščitene storitve.
Kaj se ustvari:
using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; using var ctx = PqCryptoContext.Initialize(); // Nalaganje Intermediate-CA var caCert = ctx.LoadCertificate("intermediate-ca.crt.pem"); var caKey = ctx.LoadPrivateKey("intermediate-ca.key.pem", "CaPassword!"); // Nalaganje in preverjanje CSR var csr = ctx.LoadCertificateRequest(File.ReadAllText("server.csr.pem")); if (!csr.VerifySignature()) throw new CryptographicException("Neveljavna CSR podpis"); // Izdajanje strežniškega certifikata var serverCert = ctx.IssueCertificate( csr, issuerCert: caCert, issuerKey: caKey, serialNumber: ctx.GenerateSerialNumber(), validDays: 365, // 1 leto extensions: new ExtBuilder() // Basic Constraints: Ni CA .BasicConstraints(ca: false, critical: true) // Key Usage za TLS .KeyUsage(KeyUsageFlags.DigitalSignature | KeyUsageFlags.KeyEncipherment, critical: true) // Extended Key Usage: Server Auth .ExtendedKeyUsage(ExtKeyUsage.ServerAuth) // Subject Key Identifier .SubjectKeyIdentifier(csr.PublicKey) // Authority Key Identifier .AuthorityKeyIdentifier(caCert) // CRL Distribution Point .CrlDistributionPoint("http://crl.example.com/intermediate.crl") // OCSP Responder .AuthorityInfoAccess( ocspUrl: "http://ocsp.example.com", caIssuersUrl: "http://ca.example.com/intermediate.crt" ) .Build() ); // Shranjevanje serverCert.ToPemFile("server.crt.pem"); // Ustvarjanje verige certifikatov var chain = $"{serverCert.ToPem()}\n{caCert.ToPem()}"; File.WriteAllText("server-chain.pem", chain); Console.WriteLine("Strežniški certifikat izdan:"); Console.WriteLine($" Subject: {serverCert.Subject}"); Console.WriteLine($" Issuer: {serverCert.Issuer}"); Console.WriteLine($" Serial: {serverCert.SerialNumber}"); Console.WriteLine($" Veljaven do: {serverCert.NotAfter:yyyy-MM-dd}");
| Razširitev | Vrednost | Critical | Opis |
|---|---|---|---|
| Basic Constraints | CA=false | ✅ | Ni CA certifikat |
| Key Usage | digitalSignature, keyEncipherment | ✅ | TLS-Handshake |
| Extended Key Usage | serverAuth | ❌ | Avtentikacija strežnika |
| Subject Key Identifier | Hash(PublicKey) | ❌ | ID ključa |
| Authority Key Identifier | CA-SKI | ❌ | Referenca izdajatelja |
| Subject Alt Name | DNS imena | ❌ | Prevzeto iz CSR |
| CRL Distribution Points | URL | ❌ | Preverjanje preklica |
| Authority Info Access | OCSP, CA Issuers | ❌ | Pomoč pri validaciji |
| Panoga | Veljavnost | Utemeljitev |
|---|---|---|
| Standardna IT | 1 leto (365 dni) | Maksimum CA/Browser Forum |
| Energetika/SCADA | 3-5 let | Dolgi vzdrževalni cikli |
| Zdravstvo | 1-2 leti | Zahteve skladnosti |
| Avtomobilizem | 2-3 leta | Življenjski cikel vozila |
Priporočilo: Za javne spletne strani maksimalno 398 dni (CA/B Forum). Za interne storitve so lahko daljše veljavnosti smiselne.
-----BEGIN CERTIFICATE----- MIIHxjCCBiagAwIBAgIUP7J2kM9x... -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- (Strežniški certifikat) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Intermediate-CA) -----END CERTIFICATE-----
server { listen 443 ssl; server_name www.example.com; ssl_certificate /etc/nginx/ssl/server-chain.pem; ssl_certificate_key /etc/nginx/ssl/server.key.pem; ssl_protocols TLSv1.3; ssl_prefer_server_ciphers on; }
| Povezava | Scenarij | Opis |
|---|---|---|
| Predpogoj | 2.1 Server-CSR | Ustvarjanje CSR |
| Predpogoj | 1.2 Intermediate-CA | Podpisovalna CA |
| Naslednji korak | 10.1 Nastavitev TLS strežnika | Namestitev certifikata |
| Povezano | 3.2 Odjemalski certifikat | Za mTLS |
« ← Pregled certifikatov | ↑ Scenariji | 3.2 Odjemalski certifikat → »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional