Scenarij 3.1: Izdajanje strežniškega certifikata

Kategorija: Izdajanje certifikatov
Kompleksnost: ⭐⭐⭐ (Srednje-visoka)
Predpogoji: CSR na voljo, Intermediate-CA
Predviden čas: 10-15 minut


Opis

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:

  • X.509 v3 strežniški certifikat
  • Podpisan z ML-DSA-65 (Post-Quantum)
  • Razširitve za TLS strežnik

Potek dela

flowchart LR CSR[Nalaganje CSR] --> VERIFY[Preverjanje CSR] VERIFY --> EXT[Nastavitev razširitev] EXT --> SERIAL[Generiranje Serial] SERIAL --> SIGN[Podpis s CA] SIGN --> EXPORT[Izvoz kot PEM] style SIGN fill:#e8f5e9


Primer kode (C#)

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širitve za strežniške certifikate

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

Panožno specifične veljavnosti

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.


Izhodne datoteke

server.crt.pem

-----BEGIN CERTIFICATE-----
MIIHxjCCBiagAwIBAgIUP7J2kM9x...
-----END CERTIFICATE-----

server-chain.pem

-----BEGIN CERTIFICATE-----
(Strežniški certifikat)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Intermediate-CA)
-----END CERTIFICATE-----

Nginx konfiguracija

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;
}

Povezani scenariji

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

Zuletzt geändert: dne 30.01.2026 ob 00:14