====== Scenarij 3.1: Izdajanje strežniškega certifikata ======
**Kategorija:** [[.:start|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** | [[sl:int:pqcrypt:szenarien:csr:csr_server|2.1 Server-CSR]] | Ustvarjanje CSR |
| **Predpogoj** | [[sl:int:pqcrypt:szenarien:pki:intermediate_ca_erstellen|1.2 Intermediate-CA]] | Podpisovalna CA |
| **Naslednji korak** | [[sl:int:pqcrypt:szenarien:tls:server_setup|10.1 Nastavitev TLS strežnika]] | Namestitev certifikata |
| **Povezano** | [[.:client_cert|3.2 Odjemalski certifikat]] | Za mTLS |
----
<< [[.:start|← Pregled certifikatov]] | [[sl:int:pqcrypt:szenarien:start|↑ Scenariji]] | [[.:client_cert|3.2 Odjemalski certifikat →]] >>
{{tag>scenarij certifikat strežnik tls https x509}}
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//