====== 3.4 Rješavanje problema ======
Rješavanje čestih problema s PQ-kriptografskom infrastrukturom.
----
===== Brza dijagnostika =====
Pokrenite ove naredbe za provjeru statusa sustava:
# 1. Verzija OpenSSL
openssl version
# Očekivano: OpenSSL 3.6.0 ili noviji
# 2. Jesu li PQ-algoritmi dostupni?
openssl list -signature-algorithms | grep -i "ml-dsa"
openssl list -kem-algorithms | grep -i "ml-kem"
# 3. Je li provider aktivan?
openssl list -providers
# 4. .NET Runtime
dotnet --list-runtimes | grep "NETCore.App 8"
----
===== OpenSSL pogreške =====
==== libcrypto nije pronađen ====
**Simptom:**
Unable to load DLL 'libcrypto-3-x64.dll'
**Dijagnostika:**
# Windows - pretraživanje DLL-a
where libcrypto-3-x64.dll
# Linux - pretraživanje dijeljene biblioteke
ldconfig -p | grep libcrypto
# macOS - pretraživanje dylib-a
ls /usr/local/lib/libcrypto*
**Rješenje za Windows (PowerShell kao administrator):**
# Provjera PATH-a
$env:PATH -split ";" | Select-String "OpenSSL"
# Proširenje PATH-a (ako ne postoji)
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\OpenSSL\bin", "Machine")
# Ili postavljanje OPENSSL_PATH
[Environment]::SetEnvironmentVariable("OPENSSL_PATH", "C:\Program Files\OpenSSL\bin", "Machine")
**Rješenje za Linux:**
# Ažuriranje ldconfig
echo "/usr/local/openssl/lib64" | sudo tee /etc/ld.so.conf.d/openssl.conf
sudo ldconfig
# Verifikacija
ldconfig -p | grep libcrypto
----
==== Verzija OpenSSL-a je prestara ====
**Simptom:**
OpenSSL version 3.6.0+ required for ML-DSA
**Dijagnostika:**
# Potpuna verzija i informacije o kompilaciji
openssl version -a
# Pronalazak instaliranih verzija (Linux)
find /usr -name "openssl" -type f 2>/dev/null
# Pronalazak instaliranih verzija (Windows)
where /r C:\ openssl.exe 2>nul
**Rješenje:**
Ažurirajte na OpenSSL 3.6.0+ → [[.:installation|Instalacija]]
----
==== PQ-algoritmi nisu dostupni ====
**Simptom:**
openssl list -signature-algorithms | grep -i "ml-dsa"
# Nema izlaza
**Dijagnostika:**
# Provjera statusa providera
openssl list -providers
# Svi dostupni algoritmi za potpise
openssl list -signature-algorithms
# Svi dostupni KEM-algoritmi
openssl list -kem-algorithms
**Mogući uzroci:**
* OpenSSL < 3.6.0 (ML-DSA/ML-KEM tek od 3.6)
* Provider nije učitan
* Prilagođena kompilacija bez PQ podrške
----
===== Pogreške certifikata =====
==== Prikaz detalja certifikata ====
# Analiza certifikata u PEM formatu
openssl x509 -in cert.pem -text -noout
# Provjera algoritma potpisa
openssl x509 -in cert.pem -text -noout | grep "Signature Algorithm"
# Za PQ-certifikate očekivano:
# Signature Algorithm: ML-DSA-65 ili ML-DSA-87
# Detalji javnog ključa
openssl x509 -in cert.pem -pubkey -noout | openssl pkey -pubin -text -noout
==== Verifikacija lanca certifikata ====
# Jednostavna verifikacija
openssl verify -CAfile root-ca.crt -untrusted intermediate.crt server.crt
# Opširno s detaljima pogrešaka
openssl verify -verbose -CAfile root-ca.crt -untrusted intermediate.crt server.crt
# Očekivani izlaz pri uspjehu:
# server.crt: OK
**Česte verifikacijske pogreške:**
^ Pogreška ^ Značenje ^ Rješenje ^
| ''unable to get local issuer certificate'' | CA certifikat nedostaje | Dodajte Root/Intermediate CA |
| ''certificate has expired'' | Certifikat je istekao | Obnovite certifikat |
| ''certificate signature failure'' | Potpis nevažeći | Certifikat je oštećen/manipuliran |
| ''self signed certificate in chain'' | Samopotpisani nije pouzdan | Dodajte Root CA u Trust Store |
----
===== Pogreške pohrane ključeva =====
==== PQ-ključ nije pronađen ====
**Simptom:**
PQ private key not found for certificate thumbprint: ABC123...
**Dijagnostika:**
**Windows (PowerShell):**
# Putanja PQ-pohrane ključeva
$pqKeyStore = "$env:LOCALAPPDATA\WvdS.Crypto\PqKeys"
# Provjera postojanja
Test-Path $pqKeyStore
# Popis sadržaja
Get-ChildItem $pqKeyStore -ErrorAction SilentlyContinue
# Provjera dozvola
Get-Acl $pqKeyStore | Format-List
**Linux:**
# Putanja PQ-pohrane ključeva
PQ_KEYSTORE=~/.local/share/wvds-crypto/pqkeys
# Provjera postojanja
ls -la $PQ_KEYSTORE
# Provjera dozvola (trebalo bi biti 700)
stat $PQ_KEYSTORE
**Rješenje:**
- Vraćanje sigurnosne kopije
- Ako nema sigurnosne kopije: Ponovo kreirajte certifikat s novim parom ključeva
----
===== Pogreške FIPS-načina rada =====
==== FIPS Provider nije aktivan ====
**Dijagnostika:**
# Popis providera
openssl list -providers
# Trebalo bi sadržavati:
# fips
# name: OpenSSL FIPS Provider
# status: active
**Rješenje:**
Aktivirajte FIPS Provider u ''openssl.cnf'' → [[.:konfiguration#fips-modus_openssl|FIPS konfiguracija]]
----
==== Algoritam nije FIPS-usklađen ====
**Simptom:**
error:0308010C:digital envelope routines::unsupported
**Uzrok:** Algoritam nije dopušten u FIPS-načinu rada.
**FIPS 140-3 dopušteni algoritmi:**
^ Tip ^ Dopušteno ^ Nije dopušteno ^
| Potpis | ML-DSA-44/65/87, RSA >=2048, ECDSA | Ed25519, Ed448 |
| KEM | ML-KEM-512/768/1024 | X25519, X448 |
| Hash | SHA-256, SHA-384, SHA-512 | MD5, SHA-1 |
| Šifra | AES-GCM | ChaCha20 |
----
===== Mrežna dijagnostika =====
==== Testiranje TLS veze ====
# TLS handshake i provjera certifikata
openssl s_client -connect server.example.com:443 -showcerts
# S specifičnim CA paketom
openssl s_client -connect server.example.com:443 -CAfile /path/to/ca-bundle.crt
# Prisiljavanje TLS 1.3
openssl s_client -connect server.example.com:443 -tls1_3
==== Preuzimanje certifikata s poslužitelja ====
# Preuzimanje i spremanje certifikata
openssl s_client -connect server.example.com:443 < /dev/null 2>/dev/null | \
openssl x509 -outform PEM > server.crt
# Analiza certifikata
openssl x509 -in server.crt -text -noout
----
===== Analiza logova =====
==== OpenSSL kodovi pogrešaka ====
# Pretraživanje koda pogreške
openssl errstr 0308010C
# Prikaz svih nedavnih pogrešaka (ako je u debug načinu)
openssl errstr
==== Provjera Windows Event Log ====
# Događaji vezani uz kriptografiju
Get-EventLog -LogName Application -Source "*Crypto*" -Newest 20
# Pogreške .NET Runtime
Get-EventLog -LogName Application -Source ".NET Runtime" -Newest 10 -EntryType Error
==== Provjera Linux Sysloga ====
# Unosi vezani uz OpenSSL
journalctl | grep -i openssl | tail -20
# Pogreške .NET Runtime
journalctl | grep -i dotnet | tail -20
----
===== Daljnje informacije =====
* [[.:installation|Instalacija]] – Ispravno postavljanje
* [[.:konfiguration|Konfiguracija]] – FIPS-način rada, putanje
* [[.:betrieb|Rad]] – Health provjere, certifikati
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>troubleshooting fehler diagnose openssl}}