====== 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//