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