Inhaltsverzeichnis
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+ → 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 → 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
- Installazione – Configurazione corretta
- Configurazione – Modalita FIPS, percorsi
- Operazioni – Health Check, certificati
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: il 29/01/2026 alle 23:12