====== Odpravljanje težav ======
Tukaj boste našli rešitve za pogoste težave pri gradnji OpenSSL.
----
===== Napake pri gradnji =====
==== "stdlib.h not found" ali "windows.h not found" ====
**Simptom:**
fatal error C1083: Cannot open include file: 'stdlib.h': No such file or directory
**Vzrok:** Windows SDK ni nameščen ali ni v poti.
**Rešitev:**
# Možnost 1: Namestitev Windows SDK
winget install Microsoft.WindowsSDK.10.0.22621
# Možnost 2: V Visual Studio Installer
# → "Posamezne komponente" → izberite "Windows 10 SDK"
Nato: Ponovno naložite okolje Visual Studio:
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
----
==== "perl is not recognized" ====
**Simptom:**
'perl' is not recognized as an internal or external command
**Vzrok:** Perl ni nameščen ali ni v PATH.
**Rešitev:**
# Namestitev Perl
winget install StrawberryPerl.StrawberryPerl
# Ročna nastavitev PATH (če po ponovnem zagonu še vedno ni najden)
set PATH=C:\Strawberry\perl\bin;%PATH%
----
==== "NASM not found" ====
**Simptom:**
NASM not found - please read INSTALL.md
**Vzrok:** NASM ni nameščen ali ni v PATH.
**Rešitev A: Namestitev NASM (priporočeno)**
winget install NASM.NASM
# Nastavitev PATH (pot se lahko razlikuje!)
set PATH=%LOCALAPPDATA%\bin\NASM;%PATH%
# Preverjanje
nasm -v
**Rešitev B: Gradnja brez NASM (počasneje)**
perl Configure VC-WIN64A no-asm --prefix=D:\Projects\openssl-3.6.0\bin
Brez NASM sta AES in SHA znatno počasnejša!
----
==== "cl.exe not found" ====
**Simptom:**
'cl' is not recognized as an internal or external command
**Vzrok:** Okolje Visual Studio ni naloženo.
**Rešitev:**
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
**Namig:** Vedno začnite z "Developer Command Prompt for VS 2022" iz menija Start - tam je okolje že naloženo.
----
==== "nmake se obesi pri 'nmake clean'" ====
**Simptom:** ''nmake clean'' se ne odziva ali prekine z napako.
**Vzrok:** Znana težava pri prejšnjih neuspelih gradnjah.
**Rešitev:**
# Ročno izbrišite Makefile
del makefile
# Ponovno konfigurirajte
perl Configure VC-WIN64A --prefix=D:\Projects\openssl-3.6.0\bin
# Ponovno zgradite
nmake
----
==== "LNK1181: cannot open input file '*.obj'" ====
**Simptom:**
LINK : fatal error LNK1181: cannot open input file 'crypto\aes\aes-x86_64.obj'
**Vzrok:** Prejšnja gradnja ni uspela, objektne datoteke manjkajo.
**Rešitev:**
# Izbrišite vse in začnite znova
del makefile
nmake clean 2>nul
perl Configure VC-WIN64A --prefix=D:\Projects\openssl-3.6.0\bin
nmake
----
===== Težave s PowerShell =====
==== "cl.exe povzroča napako kljub uspehu" ====
**Simptom:** PowerShell skripta se prekine, čeprav ''cl.exe'' deluje.
**Vzrok:** ''cl.exe'' piše informacije o različici v stderr, kar se pri ''$ErrorActionPreference = "Stop"'' interpretira kot napaka.
**Rešitev v skripti:**
# Pravilno obravnavanje izpisa cl.exe
try {
$clOutput = & cl 2>&1 | Out-String
Write-Host "cl.exe najden"
} catch {
Write-Host "cl.exe najden (stderr prezrt)"
}
----
==== "Execution Policy preprečuje izvajanje skripte" ====
**Simptom:**
File D:\...\build_openssl.ps1 cannot be loaded because running scripts is disabled
**Rešitev:**
# Možnost 1: Dovoli za to sejo
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
# Možnost 2: Obidi ob klicu
powershell.exe -ExecutionPolicy Bypass -File "build_openssl.ps1"
----
===== Težave med izvajanjem =====
==== "DLL not found" ob zagonu programa ====
**Simptom:**
The program can't start because libcrypto-3-x64.dll is missing
**Rešitev:**
1. Kopirajte DLL-je v mapo aplikacije:
copy D:\Projects\openssl-3.6.0\bin\bin\libcrypto-3-x64.dll .\
copy D:\Projects\openssl-3.6.0\bin\bin\libssl-3-x64.dll .\
2. Ali samodejno kopirajte v .csproj:
PreserveNewest
PreserveNewest
----
==== "ML-DSA/ML-KEM ni na voljo" ====
**Simptom:**
openssl list -signature-algorithms | findstr mldsa
# Brez izpisa
**Možni vzroki:**
1. **Napačna različica OpenSSL** - Potrebna je 3.6.0 ali novejša
openssl version
# Mora biti: OpenSSL 3.6.0 ali višja
2. **Provider ni naložen**
openssl list -providers
# Prikazati bi moralo "default" in morda "oqsprovider"
----
==== "FIPS provider not available" ====
**Simptom:**
openssl list -providers
# Ne prikazuje "fips"
**Rešitev:**
1. Ali je bilo grajeno z ''enable-fips''?
perl Configure VC-WIN64A enable-fips --prefix=...
nmake
nmake install_sw install_fips
2. Ali je ''openssl.cnf'' pravilno konfiguriran?
# V openssl.cnf:
[openssl_init]
providers = provider_sect
[provider_sect]
fips = fips_sect
base = base_sect
[fips_sect]
activate = 1
[base_sect]
activate = 1
----
===== Omrežne težave =====
==== "Git clone ne uspe" ====
**Simptom:** Časovna omejitev ali napaka povezave pri ''git clone''.
**Rešitev za korporativni proxy:**
# Konfiguracija proxyja
git config --global http.proxy http://proxy.podjetje.si:8080
git config --global https.proxy http://proxy.podjetje.si:8080
**Rešitev za napako SSL certifikata:**
# Začasno onemogočite preverjanje SSL (samo za prenos!)
git config --global http.sslVerify false
# Po prenosu ponovno omogočite
git config --global http.sslVerify true
----
===== Dodatna pomoč =====
Če vaše težave tukaj ni navedene:
* [[https://github.com/openssl/openssl/blob/master/NOTES-WINDOWS.md|OpenSSL Windows Notes]]
* [[https://github.com/openssl/openssl/issues|OpenSSL GitHub Issues]]
* [[https://stackoverflow.com/questions/tagged/openssl|StackOverflow OpenSSL]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//