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