====== 3.1 Windows x64 gradnja ====== Ta navodila vas korak za korakom vodijo skozi gradnjo OpenSSL za Windows 64-bit. ---- ===== Predpogoji ===== Prepričajte se, da so vsa orodja nameščena: * ☑ Visual Studio 2022 s C++ delovnim bremenom * ☑ Strawberry Perl * ☑ NASM (priporočeno) * ☑ OpenSSL izvorna koda v ''D:\Projects\openssl-3.6.0\src'' → [[wvds:sl:openssl:vorbereitung:start|1. Priprava]] → [[wvds:sl:openssl:quellen:start|2. Viri]] ---- ===== Možnost A: PowerShell skripta (priporočeno) ===== Skripta za gradnjo avtomatizira vse korake: # Zagon gradnje (iz poljubnega imenika) powershell.exe -ExecutionPolicy Bypass -File "D:\Projects\openssl-3.6.0\build_openssl.ps1" Skripta: - Naloži okolje Visual Studio - Nastavi PATH za Perl in NASM - Konfigurira OpenSSL - Prevede kodo - Namesti v ''D:\Projects\openssl-3.6.0\bin'' → Naprej na [[wvds:sl:openssl:testen:start|4. Testiranje]] ---- ===== Možnost B: Ročna gradnja ===== Če želite razumeti vsak korak: ==== Korak 1: Nalaganje okolja Visual Studio ==== Odprite **navadno CMD** (ne PowerShell!) in izvedite: call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" **Kaj se tukaj zgodi?** ''vcvars64.bat'' nastavi pomembne okoljske spremenljivke: * ''PATH'' - Pot do ''cl.exe'', ''link.exe'', ''nmake.exe'' * ''INCLUDE'' - Pot do datotek glave * ''LIB'' - Pot do knjižnic **Preverjanje:** cl Pričakovani izpis: Microsoft (R) C/C++ Optimizing Compiler Version 19.xx.xxxxx for x64 ==== Korak 2: Nastavitev PATH za Perl in NASM ==== set PATH=C:\Strawberry\perl\bin;%LOCALAPPDATA%\bin\NASM;%PATH% **Preverjanje:** perl -v nasm -v ==== Korak 3: Prehod v imenik z izvorno kodo ==== cd /d D:\Projects\openssl-3.6.0\src ==== Korak 4: Konfiguracija OpenSSL ==== perl Configure VC-WIN64A --prefix=D:\Projects\openssl-3.6.0\bin --openssldir=D:\Projects\openssl-3.6.0\bin\ssl **Razlaga:** | Parameter | Pomen | |-----------|-------| | ''VC-WIN64A'' | Visual C++, Windows 64-bit, AMD64 arhitektura | | ''--prefix=...'' | Kam se namestijo končne datoteke | | ''--openssldir=...'' | Kam se shranijo konfiguracijske datoteke | **Izpis (primer):** Configuring OpenSSL version 3.6.0 for target VC-WIN64A Using os-specific seed configuration Creating configdata.pm Running configdata.pm Creating makefile ********************************************************************** *** *** *** OpenSSL has been successfully configured *** *** *** *** Configuration summary *** *** *** ********************************************************************** ==== Korak 5: Prevajanje ==== nmake **Trajanje:** 10-30 minut, odvisno od strojne opreme. Potrpljenje! **Kaj se zgodi?** - Perl generira C kodo iz predlog - C prevajalnik prevede vse izvorne datoteke - Povezovalnik ustvari DLL-je in EXE-je **Napake?** → [[wvds:sl:openssl:troubleshooting|Odpravljanje težav]] ==== Korak 6: Namestitev ==== nmake install_sw ''install_sw'' namesti samo programsko opremo (brez dokumentacije). Za vse: ''nmake install'' ---- ===== Rezultat ===== Po uspešni gradnji najdete v ''D:\Projects\openssl-3.6.0\bin'': bin\ ├── bin\ │ ├── openssl.exe # Orodje ukazne vrstice │ ├── libcrypto-3-x64.dll # Kriptografska knjižnica │ └── libssl-3-x64.dll # TLS knjižnica ├── include\ │ └── openssl\ # Glave za C/C++ razvoj ├── lib\ │ ├── libcrypto.lib # Import knjižnica za povezovalnik │ ├── libssl.lib │ └── ossl-modules\ # Provider moduli (default, legacy) └── ssl\ └── openssl.cnf # Konfiguracija OpenSSL ---- ===== Hitro preverjanje ===== D:\Projects\openssl-3.6.0\bin\bin\openssl.exe version -a Pričakovani izpis: OpenSSL 3.6.0 11 Feb 2025 (Library: OpenSSL 3.6.0 11 Feb 2025) built on: ... platform: VC-WIN64A options: bn(64,64) compiler: cl /Zi /Fdossl_static.pdb /Gs0 /GF /Gy /MD /W3 ... ---- ===== Popolna PowerShell skripta ===== Če želite sami ustvariti skripto za gradnjo: # build_openssl.ps1 - OpenSSL 3.6.0 Build Script $ErrorActionPreference = "Stop" Write-Host "========================================" -ForegroundColor Cyan Write-Host "OpenSSL 3.6.0 Build Script" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan # Poti $projectRoot = "D:\Projects\openssl-3.6.0" $srcDir = "$projectRoot\src" $binDir = "$projectRoot\bin" $vsPath = "C:\Program Files\Microsoft Visual Studio\2022\Community" $vcvarsPath = "$vsPath\VC\Auxiliary\Build\vcvars64.bat" # Nalaganje okolja Visual Studio Write-Host "`n[1/5] Nalagam okolje Visual Studio..." -ForegroundColor Yellow $pinfo = New-Object System.Diagnostics.ProcessStartInfo $pinfo.FileName = "cmd.exe" $pinfo.RedirectStandardOutput = $true $pinfo.UseShellExecute = $false $pinfo.Arguments = "/c `"`"$vcvarsPath`" && set`"" $p = New-Object System.Diagnostics.Process $p.StartInfo = $pinfo $p.Start() | Out-Null $output = $p.StandardOutput.ReadToEnd() $p.WaitForExit() $output -split "`r`n" | ForEach-Object { if ($_ -match "^([^=]+)=(.*)$") { [Environment]::SetEnvironmentVariable($matches[1], $matches[2], "Process") } } # Nastavitev PATH Write-Host "[2/5] Nastavljam PATH za Perl in NASM..." -ForegroundColor Yellow $env:PATH = "C:\Strawberry\perl\bin;$env:LOCALAPPDATA\bin\NASM;$env:PATH" # Prehod v imenik z izvorno kodo Set-Location $srcDir # Brisanje starega Makefile if (Test-Path "makefile") { Remove-Item "makefile" -Force } # Konfiguracija Write-Host "[3/5] Konfiguriram OpenSSL..." -ForegroundColor Yellow & perl Configure VC-WIN64A --prefix=$binDir --openssldir=$binDir\ssl if ($LASTEXITCODE -ne 0) { throw "Konfiguracija ni uspela!" } # Prevajanje Write-Host "[4/5] Prevajam OpenSSL..." -ForegroundColor Yellow & nmake if ($LASTEXITCODE -ne 0) { throw "nmake ni uspel!" } # Namestitev Write-Host "[5/5] Nameščam..." -ForegroundColor Yellow & nmake install_sw if ($LASTEXITCODE -ne 0) { throw "Namestitev ni uspela!" } Write-Host "`n========================================" -ForegroundColor Green Write-Host "GRADNJA USPEŠNA!" -ForegroundColor Green Write-Host "Binarne datoteke v: $binDir" -ForegroundColor Green Write-Host "========================================" -ForegroundColor Green ---- ===== Naprej na ===== * [[wvds:sl:openssl:testen:start|4. Testiranje - Preverjanje namestitve]] * [[wvds:sl:openssl:integration:start|5. Integracija - Vključitev v .NET]] * [[wvds:sl:openssl:troubleshooting|Odpravljanje težav - Reševanje problemov]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//