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