3.2 Build Windows FIPS

Questa guida spiega come compilare OpenSSL con supporto FIPS 140-3.


Cos'è FIPS 140-3?

FIPS 140-3 (Federal Information Processing Standard) è uno standard americano per moduli crittografici. Definisce:

  • Quali algoritmi sono permessi
  • Come devono essere generati i chiavi
  • Autotest all'avvio
  • Rilevamento manomissioni

Chi ha bisogno di FIPS?

Settore FIPS richiesto?
————————–
Agenzie governative USA
Agenzie governative UE Spesso (BSI raccomanda)
Banche Di solito sì
Sanità Spesso sì
App interne Raramente

Prerequisiti

Oltre ai prerequisiti standard:

  • ☑ NASM è obbligatorio (non opzionale!)
  • ☑ Directory di build pulita

Passi di Compilazione

Passo 1: Preparare l'Ambiente

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%

Passo 2: Configurare con FIPS

perl Configure VC-WIN64A enable-fips --prefix=D:\Projects\openssl-3.6.0\bin --openssldir=D:\Projects\openssl-3.6.0\bin\ssl

Importante: Il parametro enable-fips abilita il FIPS provider.

Passo 3: Compilare

nmake

Passo 4: Installare (incluso FIPS)

nmake install_sw install_fips

install_fips installa il FIPS provider e genera la configurazione del modulo!


Risultato

Oltre ai file standard:

bin\
├── bin\
│   ├── openssl.exe
│   ├── libcrypto-3-x64.dll
│   └── libssl-3-x64.dll
├── lib\
│   └── ossl-modules\
│       ├── fips.dll          # Modulo FIPS Provider
│       └── legacy.dll
└── ssl\
    ├── openssl.cnf
    └── fipsmodule.cnf        # Configurazione Modulo FIPS

Attivare FIPS

Modificare openssl.cnf

Aprite D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf e aggiungete:

# All'inizio del file
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

Verificare la Modalità FIPS

set OPENSSL_CONF=D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf
 
# Elencare i provider
openssl list -providers

Output atteso:

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

Continua con


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

Zuletzt geändert: il 29/01/2026 alle 21:34