====== 3.4 Linux gradnja (WSL) ======
Ta navodila prikazujejo, kako prevesti OpenSSL pod Linuxom v WSL.
----
===== Kdaj potrebujem Linux gradnjo? =====
| Aplikacija | Linux gradnja potrebna? |
|------------|-------------------------|
| Docker vsebniki | **Da** |
| Linux strežnik | **Da** |
| .NET na Windows | Ne (uporabi Windows gradnjo) |
| WASM/Blazor | Ločeno (glejte WASM gradnjo) |
----
===== Predpogoji =====
* ☑ WSL2 z Ubuntu 22.04 ali Fedora
* ☑ Nameščena orodja za gradnjo
→ [[wvds:sl:openssl:vorbereitung:wsl-einrichten|Nastavitev WSL]]
----
===== Koraki gradnje =====
==== Korak 1: Odprite WSL ====
# Windows Terminal ali PowerShell
wsl
==== Korak 2: Namestitev odvisnosti za gradnjo ====
**Ubuntu/Debian:**
sudo apt update
sudo apt install -y build-essential perl nasm git
**Fedora:**
sudo dnf install -y gcc make perl nasm git
==== Korak 3: Prehod v imenik z izvorno kodo ====
# Windows diski so priklopljeni pod /mnt/
cd /mnt/d/Projects/openssl-3.6.0/src
==== Korak 4: Konfiguracija ====
./Configure linux-x86_64 \
--prefix=/mnt/d/Projects/openssl-3.6.0/linux-build \
--openssldir=/mnt/d/Projects/openssl-3.6.0/linux-build/ssl
**Ali s FIPS:**
./Configure linux-x86_64 enable-fips \
--prefix=/mnt/d/Projects/openssl-3.6.0/linux-build \
--openssldir=/mnt/d/Projects/openssl-3.6.0/linux-build/ssl
==== Korak 5: Prevajanje ====
# Gradnja z vsemi procesorskimi jedri
make -j$(nproc)
''$(nproc)'' vrne število procesorskih jeder. Na 8-jedrnem procesorju: ''make -j8''
==== Korak 6: Namestitev ====
make install
----
===== Rezultat =====
linux-build/
├── bin/
│ └── openssl # CLI orodje
├── include/
│ └── openssl/ # Glave
├── lib64/
│ ├── libcrypto.so.3 # Shared Library
│ ├── libssl.so.3
│ ├── libcrypto.a # Static Library
│ └── libssl.a
└── ssl/
└── openssl.cnf
----
===== Testiranje =====
# Preverjanje različice
/mnt/d/Projects/openssl-3.6.0/linux-build/bin/openssl version -a
# Preverjanje Post-Quantum algoritmov
/mnt/d/Projects/openssl-3.6.0/linux-build/bin/openssl list -signature-algorithms | grep -i mldsa
----
===== Za Docker slike =====
==== Primer Dockerfile ====
FROM ubuntu:22.04 AS builder
# Namestitev orodij za gradnjo
RUN apt-get update && apt-get install -y \
build-essential perl nasm git
# Kopiranje OpenSSL virov
COPY openssl-src/ /build/src/
# Gradnja
WORKDIR /build/src
RUN ./Configure linux-x86_64 --prefix=/opt/openssl && \
make -j$(nproc) && \
make install
# Runtime slika
FROM ubuntu:22.04
# Kopiranje samo končnih binarnih datotek
COPY --from=builder /opt/openssl /opt/openssl
# Nastavitev poti
ENV PATH="/opt/openssl/bin:$PATH"
ENV LD_LIBRARY_PATH="/opt/openssl/lib64:$LD_LIBRARY_PATH"
==== Multi-Stage Build za .NET ====
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
# Kopiranje OpenSSL knjižnic
COPY --from=openssl-builder /opt/openssl/lib64/libcrypto.so.3 /app/
COPY --from=openssl-builder /opt/openssl/lib64/libssl.so.3 /app/
WORKDIR /src
COPY . .
RUN dotnet build -c Release
----
===== Nasveti za WSL =====
==== Izboljšanje zmogljivosti ====
# Delo v Linux datotečnem sistemu je hitrejše
# Kopirajte vire v ~/openssl namesto /mnt/...
cp -r /mnt/d/Projects/openssl-3.6.0/src ~/openssl-src
cd ~/openssl-src
./Configure linux-x86_64 --prefix=~/openssl-build
make -j$(nproc)
==== Kopiranje rezultatov v Windows ====
# Po gradnji kopirajte nazaj
cp -r ~/openssl-build/* /mnt/d/Projects/openssl-3.6.0/linux-build/
----
===== Naprej na =====
* [[wvds:sl:openssl:vorbereitung:wsl-einrichten|Nastavitev WSL]]
* [[wvds:sl:openssl:testen:start|4. Testiranje]]
* [[wvds:sl:openssl:build:start|Nazaj na pregled gradnje]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//