4.3 FIPS-Modus validieren

Diese Seite zeigt, wie Sie den FIPS-Modus Ihrer OpenSSL-Installation validieren.


FIPS-Provider prüfen

$openssl = "D:\Projects\openssl-3.6.0\bin\bin\openssl.exe"
 
# Environment setzen
$env:OPENSSL_CONF = "D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf"
 
# Provider auflisten
& $openssl list -providers

Mit FIPS aktiv:

Providers:
  base
    name: OpenSSL Base Provider
    version: 3.6.0
    status: active
  fips
    name: OpenSSL FIPS Provider
    version: 3.6.0
    status: active

Ohne FIPS:

Providers:
  default
    name: OpenSSL Default Provider
    version: 3.6.0
    status: active

FIPS-Algorithmen verifizieren

Im FIPS-Modus sind nur zertifizierte Algorithmen verfügbar.

Erlaubte Hash-Algorithmen

& $openssl list -digest-algorithms

FIPS-erlaubt:

  • SHA-256, SHA-384, SHA-512
  • SHA3-256, SHA3-384, SHA3-512
  • SHAKE128, SHAKE256

Nicht FIPS-erlaubt:

  • ~~MD5~~
  • ~~SHA1~~ (nur für Kompatibilität)
  • ~~MD4~~

Erlaubte Signatur-Algorithmen

& $openssl list -signature-algorithms

FIPS-erlaubt:

  • RSA (≥2048 bit)
  • ECDSA (P-256, P-384, P-521)
  • ML-DSA-44, ML-DSA-65, ML-DSA-87

FIPS-Self-Tests

Der FIPS-Provider führt beim Laden Selbsttests durch:

# Verbose-Modus für Selbsttest-Output
$env:OPENSSL_FIPS_TEST = "1"
& $openssl list -providers

Bei fehlgeschlagenen Selbsttests wird der FIPS-Provider nicht aktiviert!


FIPS-Modul-Integrität prüfen

Die FIPS-Module haben einen eingebetteten Hash zur Integritätsprüfung:

# FIPS-Modul Hash generieren/prüfen
& $openssl fipsinstall -verify -module "D:\Projects\openssl-3.6.0\bin\lib\ossl-modules\fips.dll" -in "D:\Projects\openssl-3.6.0\bin\ssl\fipsmodule.cnf"

Erwartete Ausgabe:

VERIFY PASSED

Bei Fehler:

VERIFY FAILED

Wenn VERIFY FAILED: Die DLL wurde möglicherweise modifiziert. Neu bauen!


Test: Nicht-FIPS-Algorithmus blockiert

Im FIPS-Modus sollte MD5 blockiert sein:

# MD5 sollte fehlschlagen
& $openssl dgst -md5 test.txt 2>&1

Erwartete Ausgabe (mit FIPS):

Error setting digest
xxxx:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported

Wenn MD5 funktioniert, ist FIPS nicht aktiv!


FIPS-Properties in Code prüfen

In C oder .NET können Sie FIPS programmatisch prüfen:

// C# P/Invoke Beispiel
[DllImport("libcrypto-3-x64.dll")]
private static extern int OSSL_PROVIDER_available(IntPtr libctx, string name);
 
public static bool IsFipsAvailable()
{
    return OSSL_PROVIDER_available(IntPtr.Zero, "fips") == 1;
}

Checkliste für FIPS-Compliance

# Prüfpunkt Status
———–——–
1 enable-fips beim Build verwendet
2 fips.dll in ossl-modules/ vorhanden
3 fipsmodule.cnf generiert
4 openssl.cnf FIPS-Provider aktiviert
5 openssl list -providers zeigt FIPS aktiv
6 fipsinstall -verify PASSED
7 MD5 blockiert (Test)

Probleme beheben

"FIPS provider not available"

  1. Wurde mit enable-fips gebaut?
  2. Ist fips.dll vorhanden?
  3. Ist openssl.cnf korrekt konfiguriert?

"Self test failed"

  1. Module neu installieren: nmake install_fips
  2. Hash neu generieren: openssl fipsinstall …

MD5 funktioniert (sollte blockiert sein)

  1. default_properties = fips=yes in openssl.cnf fehlt
  2. OPENSSL_CONF Environment nicht gesetzt

Weiter zu


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

Zuletzt geändert: den 29.01.2026 um 15:14