Inhaltsverzeichnis

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:

<ItemGroup>
  <None Update="libcrypto-3-x64.dll">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </None>
  <None Update="libssl-3-x64.dll">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </None>
</ItemGroup>

"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:


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional