====== 3.1 Windows x64 Build ======
Diese Anleitung führt Sie Schritt für Schritt durch den Build von OpenSSL für Windows 64-bit.
----
===== Voraussetzungen =====
Stellen Sie sicher, dass alle Tools installiert sind:
* ☑ Visual Studio 2022 mit C++ Workload
* ☑ Strawberry Perl
* ☑ NASM (empfohlen)
* ☑ OpenSSL Quellcode in ''D:\Projects\openssl-3.6.0\src''
→ [[.:vorbereitung:start|1. Vorbereitung]]
→ [[.:quellen:start|2. Quellen]]
----
===== Option A: PowerShell-Skript (empfohlen) =====
Das Build-Skript automatisiert alle Schritte:
# Build starten (aus beliebigem Verzeichnis)
powershell.exe -ExecutionPolicy Bypass -File "D:\Projects\openssl-3.6.0\build_openssl.ps1"
Das Skript:
- Lädt die Visual Studio Umgebung
- Setzt PATH für Perl und NASM
- Konfiguriert OpenSSL
- Kompiliert den Code
- Installiert in ''D:\Projects\openssl-3.6.0\bin''
→ Weiter zu [[.:testen:start|4. Testen]]
----
===== Option B: Manueller Build =====
Falls Sie jeden Schritt verstehen möchten:
==== Schritt 1: Visual Studio Umgebung laden ====
Öffnen Sie eine **normale CMD** (nicht PowerShell!) und führen Sie aus:
REM Pfad anpassen: Community, Professional oder Enterprise
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
**Was passiert hier?**
''vcvars64.bat'' setzt wichtige Umgebungsvariablen:
* ''PATH'' - Pfad zu ''cl.exe'', ''link.exe'', ''nmake.exe''
* ''INCLUDE'' - Pfad zu Header-Dateien
* ''LIB'' - Pfad zu Libraries
**Prüfung:**
cl
Erwartete Ausgabe:
Microsoft (R) C/C++ Optimizing Compiler Version 19.xx.xxxxx for x64
==== Schritt 2: PATH für Perl und NASM setzen ====
set PATH=C:\Strawberry\perl\bin;%LOCALAPPDATA%\bin\NASM;%PATH%
**Prüfung:**
perl -v
nasm -v
==== Schritt 3: Zum Quellverzeichnis wechseln ====
cd /d D:\Projects\openssl-3.6.0\src
==== Schritt 4: OpenSSL konfigurieren ====
perl Configure VC-WIN64A --prefix=D:\Projects\openssl-3.6.0\bin --openssldir=D:\Projects\openssl-3.6.0\bin\ssl
**Erklärung:**
| Parameter | Bedeutung |
|-----------|-----------|
| ''VC-WIN64A'' | Visual C++, Windows 64-bit, AMD64-Architektur |
| ''--prefix=...'' | Wo die fertigen Dateien installiert werden |
| ''--openssldir=...'' | Wo Konfigurationsdateien gespeichert werden |
**Ausgabe (Beispiel):**
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 ***
*** ***
**********************************************************************
==== Schritt 5: Kompilieren ====
nmake
**Dauer:** 10-30 Minuten je nach Hardware. Geduld!
**Was passiert?**
- Perl generiert C-Code aus Templates
- Der C-Compiler kompiliert alle Quelldateien
- Der Linker erstellt die DLLs und EXEs
**Fehler?** → [[.:.:troubleshooting|Troubleshooting]]
==== Schritt 6: Installieren ====
nmake install_sw
''install_sw'' installiert nur Software (ohne Dokumentation). Für alles: ''nmake install''
----
===== Ergebnis =====
Nach erfolgreichem Build finden Sie in ''D:\Projects\openssl-3.6.0\bin'':
bin\
├── bin\
│ ├── openssl.exe # Kommandozeilen-Tool
│ ├── libcrypto-3-x64.dll # Kryptographie-Bibliothek
│ └── libssl-3-x64.dll # TLS-Bibliothek
├── include\
│ └── openssl\ # Header für C/C++ Entwicklung
├── lib\
│ ├── libcrypto.lib # Import-Library für Linker
│ ├── libssl.lib
│ └── ossl-modules\ # Provider-Module (default, legacy)
└── ssl\
└── openssl.cnf # OpenSSL Konfiguration
----
===== Schnell-Prüfung =====
D:\Projects\openssl-3.6.0\bin\bin\openssl.exe version -a
Erwartete Ausgabe:
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 ...
----
===== Vollständiges PowerShell-Skript =====
Falls Sie das Build-Skript selbst erstellen möchten:
# 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
# Pfade
$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"
# Visual Studio Umgebung laden
Write-Host "`n[1/5] Lade Visual Studio Umgebung..." -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")
}
}
# PATH setzen
Write-Host "[2/5] Setze PATH für Perl und NASM..." -ForegroundColor Yellow
$env:PATH = "C:\Strawberry\perl\bin;$env:LOCALAPPDATA\bin\NASM;$env:PATH"
# Zum Quellverzeichnis wechseln
Set-Location $srcDir
# Altes Makefile löschen
if (Test-Path "makefile") { Remove-Item "makefile" -Force }
# Konfigurieren
Write-Host "[3/5] Konfiguriere OpenSSL..." -ForegroundColor Yellow
& perl Configure VC-WIN64A --prefix=$binDir --openssldir=$binDir\ssl
if ($LASTEXITCODE -ne 0) { throw "Configure fehlgeschlagen!" }
# Kompilieren
Write-Host "[4/5] Kompiliere OpenSSL..." -ForegroundColor Yellow
& nmake
if ($LASTEXITCODE -ne 0) { throw "nmake fehlgeschlagen!" }
# Installieren
Write-Host "[5/5] Installiere..." -ForegroundColor Yellow
& nmake install_sw
if ($LASTEXITCODE -ne 0) { throw "Installation fehlgeschlagen!" }
Write-Host "`n========================================" -ForegroundColor Green
Write-Host "BUILD ERFOLGREICH!" -ForegroundColor Green
Write-Host "Binaries in: $binDir" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
----
===== Weiter zu =====
* [[.:testen:start|4. Testen - Installation prüfen]]
* [[.:integration:start|5. Integration - In .NET einbinden]]
* [[.:.:troubleshooting|Troubleshooting - Probleme lösen]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//