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:

  1. Ripristinare backup
  2. 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.cnfConfigurazione 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


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: il 29/01/2026 alle 23:12