This page explains how to download OpenSSL source code from GitHub.
Git is a version control system. It stores:
GitHub is a website that hosts Git repositories.
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
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 |
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.
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
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
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
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
Git is not installed or not in PATH:
winget install Git.Git
After installation: Open new terminal.
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
# Temporary: Disable SSL verification (not for production!) git config --global http.sslVerify false
If Git is not available:
D:\Projects\openssl-3.6.0\srcDisadvantage: No easy update possible!
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional