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