Diese Anleitung erklärt, wie Sie OpenSSL mit FIPS 140-3 Unterstützung kompilieren.
FIPS 140-3 (Federal Information Processing Standard) ist ein US-amerikanischer Standard für kryptographische Module. Er definiert:
Wer braucht FIPS?
| Branche | FIPS erforderlich? |
| ——— | ——————- |
| US-Behörden | Ja |
| EU-Behörden | Oft (BSI empfiehlt) |
| Banken | Meist ja |
| Gesundheitswesen | Oft ja |
| Interne Apps | Selten |
Zusätzlich zu den Standard-Voraussetzungen:
REM Pfad anpassen: Community, Professional oder Enterprise call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" set PATH=%STRAWBERRY_PERL%\bin;%LOCALAPPDATA%\bin\NASM;%PATH% cd /d %OPENSSL_SRC%
perl Configure VC-WIN64A enable-fips --prefix=D:\Projects\openssl-3.6.0\bin --openssldir=D:\Projects\openssl-3.6.0\bin\ssl
Wichtig: Der Parameter enable-fips aktiviert den FIPS-Provider.
nmake
nmake install_sw install_fips
install_fips installiert den FIPS-Provider und generiert die Modul-Konfiguration!
Zusätzlich zu den Standard-Dateien:
bin\
├── bin\
│ ├── openssl.exe
│ ├── libcrypto-3-x64.dll
│ └── libssl-3-x64.dll
├── lib\
│ └── ossl-modules\
│ ├── fips.dll # FIPS Provider Modul
│ └── legacy.dll
└── ssl\
├── openssl.cnf
└── fipsmodule.cnf # FIPS Modul-Konfiguration
Öffnen Sie D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf und fügen Sie hinzu:
# Am Anfang der Datei openssl_conf = openssl_init [openssl_init] providers = provider_sect alg_section = algorithm_sect [provider_sect] fips = fips_sect base = base_sect [fips_sect] activate = 1 [base_sect] activate = 1 [algorithm_sect] default_properties = fips=yes
Beim ersten Start muss der FIPS-Modul-Hash berechnet werden:
cd D:\Projects\openssl-3.6.0\bin bin\openssl.exe fipsinstall -out ssl\fipsmodule.cnf -module lib\ossl-modules\fips.dll
set OPENSSL_CONF=D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf # Provider auflisten openssl list -providers
Erwartete Ausgabe:
Providers:
base
name: OpenSSL Base Provider
version: 3.6.0
status: active
fips
name: OpenSSL FIPS Provider
version: 3.6.0
status: active
Im FIPS-Modus sind nur bestimmte Algorithmen erlaubt:
# Erlaubte Hash-Algorithmen openssl list -digest-algorithms # Sollte zeigen: SHA256, SHA384, SHA512, SHA3-* # NICHT: MD5, SHA1 (im FIPS-Modus deaktiviert)
# Erlaubte Signatur-Algorithmen openssl list -signature-algorithms # Sollte zeigen: RSA-PSS, ECDSA, ML-DSA
FIPS-Compliance ist mehr als nur der Build!
Für echte FIPS-Zertifizierung benötigen Sie:
Nicht-FIPS-Algorithmen im FIPS-Modus:
| Algorithmus | FIPS-Status |
| ————- | ————- |
| MD5 | ❌ Nicht erlaubt |
| SHA1 | ⚠️ Nur für Kompatibilität |
| DES | ❌ Nicht erlaubt |
| 3DES | ⚠️ Auslaufend |
| AES-GCM | ✅ Erlaubt |
| RSA ≥2048 | ✅ Erlaubt |
| ECDSA | ✅ Erlaubt |
| ML-DSA | ✅ Erlaubt |
| ML-KEM | ✅ Erlaubt |
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional