Tukaj boste našli rešitve za pogoste težave pri gradnji OpenSSL.
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"
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%
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!
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.
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
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
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)" }
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"
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:
<ItemGroup> <None Update="libcrypto-3-x64.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Update="libssl-3-x64.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
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"
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
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
Če vaše težave tukaj ni navedene:
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional