====== 3.4 Troubleshooting ====== Risoluzione dei problemi comuni con l'infrastruttura crittografica PQ. ---- ===== Diagnosi rapida ===== Eseguire questi comandi per verificare lo stato del sistema: # 1. Versione OpenSSL openssl version # Atteso: OpenSSL 3.6.0 o superiore # 2. Algoritmi PQ disponibili? openssl list -signature-algorithms | grep -i "ml-dsa" openssl list -kem-algorithms | grep -i "ml-kem" # 3. Provider attivo? openssl list -providers # 4. .NET Runtime dotnet --list-runtimes | grep "NETCore.App 8" ---- ===== Errori OpenSSL ===== ==== libcrypto non trovato ==== **Sintomo:** Unable to load DLL 'libcrypto-3-x64.dll' **Diagnosi:** # Windows - Cercare DLL where libcrypto-3-x64.dll # Linux - Cercare Shared Library ldconfig -p | grep libcrypto # macOS - Cercare Dylib ls /usr/local/lib/libcrypto* **Soluzione Windows (PowerShell come amministratore):** # Verificare PATH $env:PATH -split ";" | Select-String "OpenSSL" # Estendere PATH (se non presente) [Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\OpenSSL\bin", "Machine") # Oppure impostare OPENSSL_PATH [Environment]::SetEnvironmentVariable("OPENSSL_PATH", "C:\Program Files\OpenSSL\bin", "Machine") **Soluzione Linux:** # Aggiornare ldconfig echo "/usr/local/openssl/lib64" | sudo tee /etc/ld.so.conf.d/openssl.conf sudo ldconfig # Verificare ldconfig -p | grep libcrypto ---- ==== Versione OpenSSL troppo vecchia ==== **Sintomo:** OpenSSL version 3.6.0+ required for ML-DSA **Diagnosi:** # Versione completa e info build openssl version -a # Trovare versioni installate (Linux) find /usr -name "openssl" -type f 2>/dev/null # Trovare versioni installate (Windows) where /r C:\ openssl.exe 2>nul **Soluzione:** Aggiornare a OpenSSL 3.6.0+ → [[.:installation|Installazione]] ---- ==== Algoritmi PQ non disponibili ==== **Sintomo:** openssl list -signature-algorithms | grep -i "ml-dsa" # Nessun output **Diagnosi:** # Verificare stato provider openssl list -providers # Tutti gli algoritmi di firma disponibili openssl list -signature-algorithms # Tutti gli algoritmi KEM disponibili openssl list -kem-algorithms **Possibili cause:** * OpenSSL < 3.6.0 (ML-DSA/ML-KEM solo da 3.6) * Provider non caricato * Build custom senza supporto PQ ---- ===== Errori certificato ===== ==== Mostrare dettagli certificato ==== # Analizzare certificato in formato PEM openssl x509 -in cert.pem -text -noout # Verificare algoritmo di firma openssl x509 -in cert.pem -text -noout | grep "Signature Algorithm" # Per certificati PQ atteso: # Signature Algorithm: ML-DSA-65 o ML-DSA-87 # Dettagli chiave pubblica openssl x509 -in cert.pem -pubkey -noout | openssl pkey -pubin -text -noout ==== Verificare catena certificati ==== # Verifica semplice openssl verify -CAfile root-ca.crt -untrusted intermediate.crt server.crt # Verbose con dettagli errore openssl verify -verbose -CAfile root-ca.crt -untrusted intermediate.crt server.crt # Output atteso in caso di successo: # server.crt: OK **Errori di verifica comuni:** ^ Errore ^ Significato ^ Soluzione ^ | ''unable to get local issuer certificate'' | Certificato CA mancante | Aggiungere Root/Intermediate CA | | ''certificate has expired'' | Certificato scaduto | Rinnovare certificato | | ''certificate signature failure'' | Firma non valida | Certificato danneggiato/manipolato | | ''self signed certificate in chain'' | Self-signed non fidato | Aggiungere Root CA al Trust Store | ---- ===== Errori storage chiavi ===== ==== Chiave PQ non trovata ==== **Sintomo:** PQ private key not found for certificate thumbprint: ABC123... **Diagnosi:** **Windows (PowerShell):** # Percorso storage chiavi PQ $pqKeyStore = "$env:LOCALAPPDATA\WvdS.Crypto\PqKeys" # Verificare esistenza Test-Path $pqKeyStore # Elencare contenuto Get-ChildItem $pqKeyStore -ErrorAction SilentlyContinue # Verificare permessi Get-Acl $pqKeyStore | Format-List **Linux:** # Percorso storage chiavi PQ PQ_KEYSTORE=~/.local/share/wvds-crypto/pqkeys # Verificare esistenza ls -la $PQ_KEYSTORE # Verificare permessi (dovrebbe essere 700) stat $PQ_KEYSTORE **Soluzione:** - Ripristinare backup - Se nessun backup: Ricreare certificato con nuova coppia di chiavi ---- ===== Errori modalita FIPS ===== ==== FIPS Provider non attivo ==== **Diagnosi:** # Elencare provider openssl list -providers # Dovrebbe contenere: # fips # name: OpenSSL FIPS Provider # status: active **Soluzione:** Attivare FIPS Provider in ''openssl.cnf'' → [[.:konfiguration#fips-modus_openssl|Configurazione FIPS]] ---- ==== Algoritmo non conforme FIPS ==== **Sintomo:** error:0308010C:digital envelope routines::unsupported **Causa:** Algoritmo non consentito in modalita FIPS. **Algoritmi approvati FIPS 140-3:** ^ Tipo ^ Consentiti ^ Non consentiti ^ | Firma | 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 | | Cipher | AES-GCM | ChaCha20 | ---- ===== Diagnosi di rete ===== ==== Testare connessione TLS ==== # Handshake TLS e verifica certificato openssl s_client -connect server.example.com:443 -showcerts # Con bundle CA specifico openssl s_client -connect server.example.com:443 -CAfile /path/to/ca-bundle.crt # Forzare TLS 1.3 openssl s_client -connect server.example.com:443 -tls1_3 ==== Recuperare certificato da server ==== # Scaricare e salvare certificato openssl s_client -connect server.example.com:443 < /dev/null 2>/dev/null | \ openssl x509 -outform PEM > server.crt # Analizzare certificato openssl x509 -in server.crt -text -noout ---- ===== Analisi log ===== ==== Codici errore OpenSSL ==== # Cercare codice errore openssl errstr 0308010C # Mostrare tutti gli errori recenti (se in modalita debug) openssl errstr ==== Verificare Event Log Windows ==== # Eventi relativi a crittografia Get-EventLog -LogName Application -Source "*Crypto*" -Newest 20 # Errori .NET Runtime Get-EventLog -LogName Application -Source ".NET Runtime" -Newest 10 -EntryType Error ==== Verificare Syslog Linux ==== # Voci relative a OpenSSL journalctl | grep -i openssl | tail -20 # Errori .NET Runtime journalctl | grep -i dotnet | tail -20 ---- ===== Approfondimenti ===== * [[.:installation|Installazione]] – Configurazione corretta * [[.:konfiguration|Configurazione]] – Modalita FIPS, percorsi * [[.:betrieb|Operazioni]] – Health Check, certificati ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>troubleshooting fehler diagnose openssl}}