====== 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 | **Sì** |
| Agenzie governative UE | Spesso (BSI raccomanda) |
| Banche | **Di solito sì** |
| Sanità | **Spesso sì** |
| App interne | Raramente |
----
===== Prerequisiti =====
Oltre ai [[.:vorbereitung:windows-tools|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 =====
* [[.:testen:fips-validieren|Validare la modalità FIPS]]
* [[.:testen:start|4. Test]]
* [[.:build:start|Torna alla panoramica build]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//