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