====== 3.2 Windows FIPS Kompilacija ======
Ovaj vodič objašnjava kako kompilirati OpenSSL s FIPS 140-3 podrškom.
----
===== Što je FIPS 140-3? =====
**FIPS 140-3** (Federal Information Processing Standard) je američki standard za kriptografske module. Definira:
* Koji algoritmi su dozvoljeni
* Kako se ključevi moraju generirati
* Samotestiranja pri pokretanju
* Detekcija neovlaštenog pristupa
**Tko treba FIPS?**
| Industrija | FIPS potreban? |
|------------|----------------|
| Američke vladine agencije | **Da** |
| EU vladine agencije | Često (BSI preporučuje) |
| Banke | **Obično da** |
| Zdravstvo | **Često da** |
| Interne aplikacije | Rijetko |
----
===== Preduvjeti =====
Uz [[.:vorbereitung:windows-tools|standardne preduvjete]]:
* ☑ NASM je **obavezan** (nije opcionalno!)
* ☑ Čist build direktorij
----
===== Koraci Kompilacije =====
==== Korak 1: Pripremite Okruženje ====
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%
==== Korak 2: Konfigurirajte s FIPS-om ====
perl Configure VC-WIN64A enable-fips --prefix=D:\Projects\openssl-3.6.0\bin --openssldir=D:\Projects\openssl-3.6.0\bin\ssl
**Važno:** Parametar ''enable-fips'' omogućuje FIPS provider.
==== Korak 3: Kompilirajte ====
nmake
==== Korak 4: Instalirajte (uključujući FIPS) ====
nmake install_sw install_fips
''install_fips'' instalira FIPS provider i generira konfiguraciju modula!
----
===== Rezultat =====
Uz standardne datoteke:
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 Konfiguracija
----
===== Aktivacija FIPS-a =====
==== Izmijenite openssl.cnf ====
Otvorite ''D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf'' i dodajte:
# Na početak datoteke
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
----
===== Provjera FIPS Načina =====
set OPENSSL_CONF=D:\Projects\openssl-3.6.0\bin\ssl\openssl.cnf
# Izlistajte providere
openssl list -providers
Očekivani izlaz:
Providers:
base
name: OpenSSL Base Provider
version: 3.6.0
status: active
fips
name: OpenSSL FIPS Provider
version: 3.6.0
status: active
----
===== Nastavite na =====
* [[.:testen:fips-validieren|Validacija FIPS načina]]
* [[.:testen:start|4. Testiranje]]
* [[.:build:start|Povratak na pregled kompilacije]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//