====== Runbook: Izdavanje certifikata ======
**Trajanje:** ~10 minuta \\
**Uloga:** PKI operator \\
**Preduvjet:** Odobreni CSR
----
===== Workflow =====
flowchart TD
A[CSR primljen] --> B{Validacija CSR-a}
B -->|Nevaljan| C[Odbijanje + Ticket]
B -->|Valjan| D{Odobrenje?}
D -->|Ne| E[Zahtjev za odobrenje]
D -->|Da| F[Potpisivanje certifikata]
F --> G{Hibridni način?}
G -->|Da| H[Dodavanje PQ ekstenzije]
G -->|Ne| I[Klasično potpisivanje]
H --> J[Isporuka]
I --> J
J --> K[Audit Log]
style B fill:#fff3e0
style F fill:#e8f5e9
style H fill:#e3f2fd
----
===== Korak 1: Primanje i validacija CSR-a =====
**Kontrolna lista prije potpisivanja:**
| # | Točka provjere | Naredba | Očekivano |
|---|----------------|---------|-----------|
| 1 | Format CSR-a valjan | ''openssl req -in request.csr -verify -noout'' | ''verify OK'' |
| 2 | Duljina ključa | ''openssl req -in request.csr -text \| grep "Public-Key"'' | >=2048 Bit (RSA), >=256 Bit (EC) |
| 3 | Subject ispravan | ''openssl req -in request.csr -subject -noout'' | Prema zahtjevu |
| 4 | SAN-ovi potpuni | ''openssl req -in request.csr -text \| grep -A1 "Subject Alternative"'' | Sva imena hostova |
# Potpuna provjera CSR-a
openssl req -in request.csr -text -noout -verify
----
===== Korak 2: Provjera odobrenja =====
| Tip certifikata | Odobrava | Dokumentacija |
|-----------------|----------|---------------|
| Server (interni) | Automatski / Ticket | Br. ticketa |
| Server (vanjski) | IT-Security | E-Mail + Ticket |
| Klijent | Voditelj odjela | Obrazac |
| Code-Signing | CISO | Pisano |
----
===== Korak 3: Potpisivanje certifikata =====
==== Klasični način ====
# Potpisivanje server certifikata (1 godina)
openssl ca -config openssl.cnf \
-extensions server_cert \
-in request.csr \
-out certificate.pem \
-days 365 \
-notext
# Zabilježiti serijski broj
openssl x509 -in certificate.pem -serial -noout
==== Hibridni način (PQ) ====
// C# s WvdS.System.Security.Cryptography
using var intermediate = new X509Certificate2("intermediate.pfx", "password");
var csr = CertificateRequest.LoadSigningRequest(
File.ReadAllBytes("request.csr"),
HashAlgorithmName.SHA256);
var cert = csr.Create(
intermediate,
DateTimeOffset.UtcNow,
DateTimeOffset.UtcNow.AddDays(365),
Guid.NewGuid().ToByteArray(),
CryptoMode.Hybrid); // PQ ekstenzija
File.WriteAllText("certificate.pem", cert.ExportCertificatePem());
----
===== Korak 4: Isporuka =====
| Format | Upotreba | Naredba |
|--------|----------|---------|
| PEM | Linux, Apache | ''cp certificate.pem /output/'' |
| PFX | Windows, IIS | ''openssl pkcs12 -export -in certificate.pem -inkey private.key -out certificate.pfx'' |
| DER | Java | ''openssl x509 -in certificate.pem -outform DER -out certificate.der'' |
# Isporuka s lancem
cat certificate.pem intermediate.pem > fullchain.pem
----
===== Korak 5: Dokumentacija =====
**Obavezna polja u ticketu/logu:**
| Polje | Primjer |
|-------|---------|
| Serijski broj | ''01:23:45:67:89:AB:CD:EF'' |
| Subject | ''CN=server.example.com'' |
| Vrijedi do | ''2025-12-15'' |
| Izdao | ''Ime operatera'' |
| Br. ticketa | ''INC-2024-12345'' |
| Način | ''Hybrid / Classic'' |
----
===== Rješavanje problema =====
| Problem | Uzrok | Rješenje |
|---------|-------|----------|
| ''unable to load CSR'' | Pogrešan format | ''openssl req -inform DER -in request.der -out request.pem'' |
| ''signature verify failed'' | CSR manipuliran | Zatražiti novi CSR |
| ''wrong issuer'' | Pogrešan CA | Provjeriti CA certifikat |
| ''certificate request failed'' | Greška u konfiguraciji | Provjeriti ''openssl.cnf'' |
----
===== Povezani runbookovi =====
* [[.:zertifikat-erneuern|Obnova certifikata]] – Za certifikate koji ističu
* [[.:zertifikat-widerrufen|Opoziv certifikata]] – Kod kompromitacije
* [[hr:int:pqcrypt:szenarien:kurzreferenz:csr|CSR kratki pregled]] – Primjeri koda
----
<< [[.:start|← Dnevne operacije]] | [[.:zertifikat-erneuern|→ Obnova certifikata]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>runbook certifikat izdavanje operator}}