====== 2.1 Clone GitHub Repository ====== This page explains how to download OpenSSL source code from GitHub. ---- ===== What is Git? ===== **Git** is a version control system. It stores: * All versions of a project * Who changed what and when * "Tags" for important versions (e.g. v3.6.0) **GitHub** is a website that hosts Git repositories. ---- ===== Prepare Project Structure ===== First we create a sensible folder structure: # Create main folder mkdir D:\Projects\openssl-3.6.0 # Create subfolders mkdir D:\Projects\openssl-3.6.0\src # Source code goes here mkdir D:\Projects\openssl-3.6.0\bin # Compiled files go here Result: D:\Projects\openssl-3.6.0\ ├── src\ # OpenSSL source code (from GitHub) └── bin\ # Target for compiled binaries ---- ===== Clone OpenSSL ===== ==== Option A: Only tag v3.6.0 (recommended) ==== cd D:\Projects\openssl-3.6.0 git clone --depth 1 --branch openssl-3.6.0 https://github.com/openssl/openssl.git src **Explanation of parameters:** | Parameter | Meaning | |-----------|---------| | ''--depth 1'' | Only latest version (saves ~500 MB!) | | ''--branch openssl-3.6.0'' | The tag for version 3.6.0 | | ''src'' | Target folder | ==== Option B: Complete repository ==== If you want to try different versions: cd D:\Projects\openssl-3.6.0 git clone https://github.com/openssl/openssl.git src cd src git checkout openssl-3.6.0 The complete repository is about 500 MB. With ''--depth 1'' only ~50 MB. ---- ===== List Available Tags ===== If you need a different version: cd D:\Projects\openssl-3.6.0\src # Show all tags git tag | Select-String "openssl-3" # Output (example): # openssl-3.0.0 # openssl-3.0.1 # ... # openssl-3.5.0 # openssl-3.6.0 ---- ===== Switch to Another Tag ===== cd D:\Projects\openssl-3.6.0\src # Switch to another version git checkout openssl-3.5.0 # Back to 3.6.0 git checkout openssl-3.6.0 ---- ===== Verify Version ===== cd D:\Projects\openssl-3.6.0\src # Show current tag git describe --tags # Expected output: openssl-3.6.0 # Or: Show commit info git log -1 --oneline ---- ===== Update Source Code ===== If you have the complete repository and want to update: cd D:\Projects\openssl-3.6.0\src # Fetch latest changes git fetch --all --tags # Show new tags git tag | Select-String "openssl-3.6" # Switch to new tag (e.g. 3.6.1) git checkout openssl-3.6.1 ---- ===== Common Problems ===== ==== "git is not recognized" ==== Git is not installed or not in PATH: winget install Git.Git After installation: Open new terminal. ==== Firewall blocks GitHub ==== If you're behind a corporate firewall: # Set proxy (if needed) git config --global http.proxy http://proxy.company.com:8080 git config --global https.proxy http://proxy.company.com:8080 ==== SSL Certificate Error ==== # Temporary: Disable SSL verification (not for production!) git config --global http.sslVerify false ---- ===== Download without Git (Alternative) ===== If Git is not available: - Go to [[https://github.com/openssl/openssl/releases]] - Select version 3.6.0 - Download "Source code (zip)" - Extract to ''D:\Projects\openssl-3.6.0\src'' **Disadvantage:** No easy update possible! ---- ===== Continue to ===== * [[.:build:start|3. Build - Compile]] * [[.:quellen:verzeichnisstruktur|Understand Directory Structure]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//