3.4 Odpravljanje napak

Odpravljanje pogostih težav z infrastrukturo PQ-kriptografije.


Hitra diagnostika

Zaženite te ukaze za preverjanje stanja sistema:

# 1. Različica OpenSSL
openssl version
# Pričakovano: OpenSSL 3.6.0 ali novejši
 
# 2. Ali so PQ-algoritmi na voljo?
openssl list -signature-algorithms | grep -i "ml-dsa"
openssl list -kem-algorithms | grep -i "ml-kem"
 
# 3. Ali je ponudnik aktiven?
openssl list -providers
 
# 4. .NET Runtime
dotnet --list-runtimes | grep "NETCore.App 8"

Napake OpenSSL

libcrypto ni najdena

Simptom:

Unable to load DLL 'libcrypto-3-x64.dll'

Diagnostika:

# Windows - iskanje DLL
where libcrypto-3-x64.dll
 
# Linux - iskanje deljene knjižnice
ldconfig -p | grep libcrypto
 
# macOS - iskanje dylib
ls /usr/local/lib/libcrypto*

Rešitev Windows (PowerShell kot administrator):

# Preverite PATH
$env:PATH -split ";" | Select-String "OpenSSL"
 
# Razširite PATH (če ni prisoten)
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\OpenSSL\bin", "Machine")
 
# Ali nastavite OPENSSL_PATH
[Environment]::SetEnvironmentVariable("OPENSSL_PATH", "C:\Program Files\OpenSSL\bin", "Machine")

Rešitev Linux:

# Posodobite ldconfig
echo "/usr/local/openssl/lib64" | sudo tee /etc/ld.so.conf.d/openssl.conf
sudo ldconfig
 
# Preverite
ldconfig -p | grep libcrypto

Prestara različica OpenSSL

Simptom:

OpenSSL version 3.6.0+ required for ML-DSA

Diagnostika:

# Celotna različica in informacije o gradnji
openssl version -a
 
# Poišči nameščene različice (Linux)
find /usr -name "openssl" -type f 2>/dev/null
 
# Poišči nameščene različice (Windows)
where /r C:\ openssl.exe 2>nul

Rešitev: Posodobite na OpenSSL 3.6.0+ → Namestitev


PQ-algoritmi niso na voljo

Simptom:

openssl list -signature-algorithms | grep -i "ml-dsa"
# Ni izhoda

Diagnostika:

# Preverite stanje ponudnika
openssl list -providers
 
# Vsi razpoložljivi algoritmi za podpise
openssl list -signature-algorithms
 
# Vsi razpoložljivi KEM-algoritmi
openssl list -kem-algorithms

Možni vzroki:

  • OpenSSL < 3.6.0 (ML-DSA/ML-KEM šele od 3.6)
  • Ponudnik ni naložen
  • Gradnja po meri brez podpore PQ

Napake certifikatov

Prikaz podrobnosti certifikata

# Analiziraj certifikat v formatu PEM
openssl x509 -in cert.pem -text -noout
 
# Preverite algoritem podpisa
openssl x509 -in cert.pem -text -noout | grep "Signature Algorithm"
 
# Pri PQ-certifikatih pričakovano:
# Signature Algorithm: ML-DSA-65 ali ML-DSA-87
 
# Podrobnosti javnega ključa
openssl x509 -in cert.pem -pubkey -noout | openssl pkey -pubin -text -noout

Preverjanje verige certifikatov

# Enostavno preverjanje
openssl verify -CAfile root-ca.crt -untrusted intermediate.crt server.crt
 
# Podrobno s podrobnostmi napak
openssl verify -verbose -CAfile root-ca.crt -untrusted intermediate.crt server.crt
 
# Pričakovani izhod pri uspehu:
# server.crt: OK

Pogoste napake pri preverjanju:

Napaka Pomen Rešitev
unable to get local issuer certificate Manjka CA certifikat Dodajte korenski/vmesni CA
certificate has expired Certifikat je potekel Obnovite certifikat
certificate signature failure Neveljaven podpis Certifikat poškodovan/spremenjen
self signed certificate in chain Samopodpisani ni zaupan Dodajte korenski CA v Trust Store

Napake shrambe ključev

PQ-ključ ni najden

Simptom:

PQ private key not found for certificate thumbprint: ABC123...

Diagnostika:

Windows (PowerShell):

# Pot do shrambe PQ-ključev
$pqKeyStore = "$env:LOCALAPPDATA\WvdS.Crypto\PqKeys"
 
# Preverite obstoj
Test-Path $pqKeyStore
 
# Seznam vsebine
Get-ChildItem $pqKeyStore -ErrorAction SilentlyContinue
 
# Preverite dovoljenja
Get-Acl $pqKeyStore | Format-List

Linux:

# Pot do shrambe PQ-ključev
PQ_KEYSTORE=~/.local/share/wvds-crypto/pqkeys
 
# Preverite obstoj
ls -la $PQ_KEYSTORE
 
# Preverite dovoljenja (mora biti 700)
stat $PQ_KEYSTORE

Rešitev:

  1. Obnovite iz varnostne kopije
  2. Če ni varnostne kopije: Ponovno ustvarite certifikat z novim parom ključev

Napake FIPS-načina

FIPS Provider ni aktiven

Diagnostika:

# Seznam ponudnikov
openssl list -providers
 
# Mora vsebovati:
#   fips
#     name: OpenSSL FIPS Provider
#     status: active

Rešitev: Aktivirajte FIPS Provider v openssl.cnfKonfiguracija FIPS


Algoritem ni skladen s FIPS

Simptom:

error:0308010C:digital envelope routines::unsupported

Vzrok: Algoritem ni dovoljen v FIPS-načinu.

Algoritmi, odobreni za FIPS 140-3:

Tip Dovoljeni Nedovoljeni
Podpis ML-DSA-44/65/87, RSA ≥2048, ECDSA Ed25519, Ed448
KEM ML-KEM-512/768/1024 X25519, X448
Zgoščevanje SHA-256, SHA-384, SHA-512 MD5, SHA-1
Šifriranje AES-GCM ChaCha20

Omrežna diagnostika

Testiranje TLS-povezave

# Preverite TLS-rokovanje in certifikat
openssl s_client -connect server.example.com:443 -showcerts
 
# S specifičnim CA-paketom
openssl s_client -connect server.example.com:443 -CAfile /pot/do/ca-bundle.crt
 
# Prisili TLS 1.3
openssl s_client -connect server.example.com:443 -tls1_3

Prenos certifikata s strežnika

# Prenesi in shrani certifikat
openssl s_client -connect server.example.com:443 < /dev/null 2>/dev/null | \
    openssl x509 -outform PEM > server.crt
 
# Analiziraj certifikat
openssl x509 -in server.crt -text -noout

Analiza dnevnikov

Kode napak OpenSSL

# Poišči kodo napake
openssl errstr 0308010C
 
# Prikaži vse nedavne napake (če je v načinu za razhroščevanje)
openssl errstr

Preverjanje dnevnika dogodkov Windows

# Dogodki, povezani s kriptografijo
Get-EventLog -LogName Application -Source "*Crypto*" -Newest 20
 
# Napake .NET Runtime
Get-EventLog -LogName Application -Source ".NET Runtime" -Newest 10 -EntryType Error

Preverjanje sistemskega dnevnika Linux

# Vnosi, povezani z OpenSSL
journalctl | grep -i openssl | tail -20
 
# Napake .NET Runtime
journalctl | grep -i dotnet | tail -20

Nadaljnje branje


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

Zuletzt geändert: dne 29.01.2026 ob 23:13