====== 3.4 Odpravljanje napak ======
Odpravljanje pogostih težav z infrastrukturo PQ-kriptografije.
----
===== Hitra diagnostika =====
Zaženite te ukaze za preverjanje stanja sistema:
# 1. Različica OpenSSL
openssl version
# Pričakovano: OpenSSL 3.6.0 ali novejši
# 2. Ali so PQ-algoritmi na voljo?
openssl list -signature-algorithms | grep -i "ml-dsa"
openssl list -kem-algorithms | grep -i "ml-kem"
# 3. Ali je ponudnik aktiven?
openssl list -providers
# 4. .NET Runtime
dotnet --list-runtimes | grep "NETCore.App 8"
----
===== Napake OpenSSL =====
==== libcrypto ni najdena ====
**Simptom:**
Unable to load DLL 'libcrypto-3-x64.dll'
**Diagnostika:**
# Windows - iskanje DLL
where libcrypto-3-x64.dll
# Linux - iskanje deljene knjižnice
ldconfig -p | grep libcrypto
# macOS - iskanje dylib
ls /usr/local/lib/libcrypto*
**Rešitev Windows (PowerShell kot administrator):**
# Preverite PATH
$env:PATH -split ";" | Select-String "OpenSSL"
# Razširite PATH (če ni prisoten)
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\OpenSSL\bin", "Machine")
# Ali nastavite OPENSSL_PATH
[Environment]::SetEnvironmentVariable("OPENSSL_PATH", "C:\Program Files\OpenSSL\bin", "Machine")
**Rešitev Linux:**
# Posodobite ldconfig
echo "/usr/local/openssl/lib64" | sudo tee /etc/ld.so.conf.d/openssl.conf
sudo ldconfig
# Preverite
ldconfig -p | grep libcrypto
----
==== Prestara različica OpenSSL ====
**Simptom:**
OpenSSL version 3.6.0+ required for ML-DSA
**Diagnostika:**
# Celotna različica in informacije o gradnji
openssl version -a
# Poišči nameščene različice (Linux)
find /usr -name "openssl" -type f 2>/dev/null
# Poišči nameščene različice (Windows)
where /r C:\ openssl.exe 2>nul
**Rešitev:**
Posodobite na OpenSSL 3.6.0+ → [[.:installation|Namestitev]]
----
==== PQ-algoritmi niso na voljo ====
**Simptom:**
openssl list -signature-algorithms | grep -i "ml-dsa"
# Ni izhoda
**Diagnostika:**
# Preverite stanje ponudnika
openssl list -providers
# Vsi razpoložljivi algoritmi za podpise
openssl list -signature-algorithms
# Vsi razpoložljivi KEM-algoritmi
openssl list -kem-algorithms
**Možni vzroki:**
* OpenSSL < 3.6.0 (ML-DSA/ML-KEM šele od 3.6)
* Ponudnik ni naložen
* Gradnja po meri brez podpore PQ
----
===== Napake certifikatov =====
==== Prikaz podrobnosti certifikata ====
# Analiziraj certifikat v formatu PEM
openssl x509 -in cert.pem -text -noout
# Preverite algoritem podpisa
openssl x509 -in cert.pem -text -noout | grep "Signature Algorithm"
# Pri PQ-certifikatih pričakovano:
# Signature Algorithm: ML-DSA-65 ali ML-DSA-87
# Podrobnosti javnega ključa
openssl x509 -in cert.pem -pubkey -noout | openssl pkey -pubin -text -noout
==== Preverjanje verige certifikatov ====
# Enostavno preverjanje
openssl verify -CAfile root-ca.crt -untrusted intermediate.crt server.crt
# Podrobno s podrobnostmi napak
openssl verify -verbose -CAfile root-ca.crt -untrusted intermediate.crt server.crt
# Pričakovani izhod pri uspehu:
# server.crt: OK
**Pogoste napake pri preverjanju:**
^ Napaka ^ Pomen ^ Rešitev ^
| ''unable to get local issuer certificate'' | Manjka CA certifikat | Dodajte korenski/vmesni CA |
| ''certificate has expired'' | Certifikat je potekel | Obnovite certifikat |
| ''certificate signature failure'' | Neveljaven podpis | Certifikat poškodovan/spremenjen |
| ''self signed certificate in chain'' | Samopodpisani ni zaupan | Dodajte korenski CA v Trust Store |
----
===== Napake shrambe ključev =====
==== PQ-ključ ni najden ====
**Simptom:**
PQ private key not found for certificate thumbprint: ABC123...
**Diagnostika:**
**Windows (PowerShell):**
# Pot do shrambe PQ-ključev
$pqKeyStore = "$env:LOCALAPPDATA\WvdS.Crypto\PqKeys"
# Preverite obstoj
Test-Path $pqKeyStore
# Seznam vsebine
Get-ChildItem $pqKeyStore -ErrorAction SilentlyContinue
# Preverite dovoljenja
Get-Acl $pqKeyStore | Format-List
**Linux:**
# Pot do shrambe PQ-ključev
PQ_KEYSTORE=~/.local/share/wvds-crypto/pqkeys
# Preverite obstoj
ls -la $PQ_KEYSTORE
# Preverite dovoljenja (mora biti 700)
stat $PQ_KEYSTORE
**Rešitev:**
- Obnovite iz varnostne kopije
- Če ni varnostne kopije: Ponovno ustvarite certifikat z novim parom ključev
----
===== Napake FIPS-načina =====
==== FIPS Provider ni aktiven ====
**Diagnostika:**
# Seznam ponudnikov
openssl list -providers
# Mora vsebovati:
# fips
# name: OpenSSL FIPS Provider
# status: active
**Rešitev:**
Aktivirajte FIPS Provider v ''openssl.cnf'' → [[.:konfiguration#fips-modus_openssl|Konfiguracija FIPS]]
----
==== Algoritem ni skladen s FIPS ====
**Simptom:**
error:0308010C:digital envelope routines::unsupported
**Vzrok:** Algoritem ni dovoljen v FIPS-načinu.
**Algoritmi, odobreni za FIPS 140-3:**
^ Tip ^ Dovoljeni ^ Nedovoljeni ^
| Podpis | ML-DSA-44/65/87, RSA ≥2048, ECDSA | Ed25519, Ed448 |
| KEM | ML-KEM-512/768/1024 | X25519, X448 |
| Zgoščevanje | SHA-256, SHA-384, SHA-512 | MD5, SHA-1 |
| Šifriranje | AES-GCM | ChaCha20 |
----
===== Omrežna diagnostika =====
==== Testiranje TLS-povezave ====
# Preverite TLS-rokovanje in certifikat
openssl s_client -connect server.example.com:443 -showcerts
# S specifičnim CA-paketom
openssl s_client -connect server.example.com:443 -CAfile /pot/do/ca-bundle.crt
# Prisili TLS 1.3
openssl s_client -connect server.example.com:443 -tls1_3
==== Prenos certifikata s strežnika ====
# Prenesi in shrani certifikat
openssl s_client -connect server.example.com:443 < /dev/null 2>/dev/null | \
openssl x509 -outform PEM > server.crt
# Analiziraj certifikat
openssl x509 -in server.crt -text -noout
----
===== Analiza dnevnikov =====
==== Kode napak OpenSSL ====
# Poišči kodo napake
openssl errstr 0308010C
# Prikaži vse nedavne napake (če je v načinu za razhroščevanje)
openssl errstr
==== Preverjanje dnevnika dogodkov Windows ====
# Dogodki, povezani s kriptografijo
Get-EventLog -LogName Application -Source "*Crypto*" -Newest 20
# Napake .NET Runtime
Get-EventLog -LogName Application -Source ".NET Runtime" -Newest 10 -EntryType Error
==== Preverjanje sistemskega dnevnika Linux ====
# Vnosi, povezani z OpenSSL
journalctl | grep -i openssl | tail -20
# Napake .NET Runtime
journalctl | grep -i dotnet | tail -20
----
===== Nadaljnje branje =====
* [[.:installation|Namestitev]] – Pravilna nastavitev
* [[.:konfiguration|Konfiguracija]] – FIPS-način, poti
* [[.:betrieb|Obratovanje]] – Zdravstveni pregledi, certifikati
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>troubleshooting fehler diagnose openssl}}