Skip to content

OpenSSL 3.4.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 18:33
· 7 commits to main since this release

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 implementation
  • libcrypto.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 deps

Dynamic 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_PATH

BusyBox 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 -lz

Files

  • openssl-3.4.0-x86_64.tar.gz: OpenSSL build for x86_64 architecture
  • openssl-3.4.0-aarch64.tar.gz: OpenSSL build for aarch64 architecture

Installation

Extract the appropriate archive:

tar -xzf openssl-3.4.0-<arch>.tar.gz

Usage 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 program

Dynamic 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
./program

Command-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.dec

Integration 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 program

Version 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.