Repository navigation
OpenSSL 3.4.0
OpenSSL 3.4.0 builds for x86_64 and aarch64 architectures.
Built from source with the following configuration:
- Version: OpenSSL 3.4.0
- Architectures: x86_64 (native), aarch64 (native ARM64)
- Libraries: Both static (.a) and shared (.so) libraries included
- Static Build: Compatible with glibc 2.36+ and BusyBox environments
- Shared Build: Standard shared libraries for dynamic linking
- Type: Dual native compilation (static + shared) on respective architectures
- Optimization: Stripped binaries and shared libraries for reduced download size
- Features: Full OpenSSL functionality with zlib compression support
What is OpenSSL?
OpenSSL is a robust, commercial-grade, full-featured toolkit for general-purpose cryptography and secure communication. It provides:
- SSL/TLS protocol implementation
- Cryptographic functions and algorithms
- Certificate handling and validation
- Random number generation
- Message digests and digital signatures
- Public and private key cryptography
Libraries Included
Core Libraries:
libssl.a/libssl.so- SSL/TLS protocol implementationlibcrypto.a/libcrypto.so- Cryptographic functions and utilities
Tools:
openssl- Command-line tool for cryptographic operations
Use Cases
Static Linking (Recommended for BusyBox/Embedded):
Use the static libraries (.a files) to create fully self-contained binaries:
# For BusyBox/embedded systems - fully static
gcc -static -L/path/to/openssl/lib -I/path/to/openssl/include program.c -lssl -lcrypto -lz -o program
# Verify no dynamic dependencies
ldd program # Should show 'not a dynamic executable' or minimal system depsDynamic Linking:
Use shared libraries for standard applications:
gcc -L/path/to/openssl/lib program.c -lssl -lcrypto -o program
export LD_LIBRARY_PATH=/path/to/openssl/lib:$LD_LIBRARY_PATHBusyBox Integration:
Perfect for use with BusyBox environments and minimal systems:
# Static linking ensures no runtime dependencies
gcc -static -L/path/to/openssl/lib -I/path/to/openssl/include program.c -lssl -lcrypto -lzFiles
openssl-3.4.0-x86_64.tar.gz: OpenSSL build for x86_64 architectureopenssl-3.4.0-aarch64.tar.gz: OpenSSL build for aarch64 architecture
Installation
Extract the appropriate archive:
tar -xzf openssl-3.4.0-<arch>.tar.gzUsage Examples
Static Linking (Recommended):
# Extract OpenSSL
tar -xzf openssl-3.4.0-x86_64.tar.gz
# Compile with static OpenSSL (no runtime dependencies)
gcc -static \
-I$PWD/openssl-3.4.0-x86_64/include \
-L$PWD/openssl-3.4.0-x86_64/lib \
program.c -lssl -lcrypto -lz -o programDynamic Linking:
# Set up environment
export OPENSSL_ROOT=$PWD/openssl-3.4.0-x86_64
export LD_LIBRARY_PATH=$OPENSSL_ROOT/lib:$LD_LIBRARY_PATH
export PATH=$OPENSSL_ROOT/bin:$PATH
# Compile and run
gcc -I$OPENSSL_ROOT/include -L$OPENSSL_ROOT/lib program.c -lssl -lcrypto -o program
./programCommand-line Usage:
# Extract and use OpenSSL command-line tool
tar -xzf openssl-3.4.0-x86_64.tar.gz
export PATH=$PWD/openssl-3.4.0-x86_64/bin:$PATH
# Generate private key
openssl genrsa -out private.key 2048
# Create certificate signing request
openssl req -new -key private.key -out request.csr
# Test SSL connection
openssl s_client -connect google.com:443
# Hash file
openssl dgst -sha256 file.txt
# Encrypt/decrypt files
openssl enc -aes-256-cbc -salt -in file.txt -out file.txt.enc
openssl enc -aes-256-cbc -d -in file.txt.enc -out file.txt.decIntegration with Other Builds:
This OpenSSL can be used with the GCC, binutils, and other tool builds from this repository:
# Extract all tools
tar -xzf openssl-3.4.0-<arch>.tar.gz
tar -xzf gcc-<version>-<arch>.tar.gz
tar -xzf binutils-<version>-<arch>.tar.gz
# Set up complete toolchain
export PATH=$PWD/gcc-<version>-<arch>/bin:$PWD/binutils-<version>-<arch>/bin:$PWD/openssl-3.4.0-<arch>/bin:$PATH
# For static linking (recommended for portability)
gcc -static \
-I$PWD/openssl-3.4.0-<arch>/include \
-L$PWD/openssl-3.4.0-<arch>/lib \
program.c -lssl -lcrypto -lz -o programVersion Information
Available Versions:
- OpenSSL 3.4.0: Latest stable with newest features and security fixes
- OpenSSL 3.0.15: LTS version with better compatibility for older systems
Version Selection Guide:
- Use 3.4.0: For latest features, newest security fixes, and forward-looking builds
- Use 3.0.15: For maximum compatibility with existing systems and older distributions
Compatibility Notes
- glibc 2.36+ Compatible: Built and tested for broad glibc compatibility
- BusyBox Ready: Static linking ensures compatibility with BusyBox environments
- No Runtime Dependencies: Static builds eliminate the need for system OpenSSL libraries
- Symbol Compatibility: 3.0.15 provides better symbol compatibility with Ubuntu 22.04 and similar systems
- Performance: Optimized build with stripped binaries for minimal size
Static vs Dynamic Usage:
- Use Static: For embedded systems, containers, BusyBox environments, or maximum portability
- Use Dynamic: For standard desktop/server applications where library sharing is beneficial
This build provides both options, allowing you to choose the appropriate linking method for your use case.