s2n-tls is a C99 implementation of the TLS/SSL protocols designed to be simple, small, fast, and security-focused.
The tool addresses the need for a lightweight, secure TLS implementation by providing a from-scratch C99 codebase that prioritizes both performance and cryptographic safety. It handles the full TLS/SSL protocol stack with an emphasis on minimizing complexity and attack surface, making it suitable for environments where resource constraints or security requirements demand careful control over the underlying cryptographic layer.
Organizations should consider s2n-tls when building systems that require direct control over TLS behavior, need to minimize dependencies, or operate in resource-constrained environments. It suits embedded systems, high-performance servers, and applications where the overhead of larger TLS libraries is unacceptable. The project provides Rust bindings alongside its C API, enabling adoption across multiple language ecosystems. Platform support spans x86_64 and aarch64 architectures across Linux distributions, BSD variants, macOS, and Windows through MSYS2, with Tier 1 guarantees for Ubuntu, Amazon Linux, NixOS, OpenBSD, FreeBSD, and macOS, and Tier 2 support for Fedora and older Ubuntu versions.
Development activity shows consistent attention to platform coverage, with active work to expand CI testing across multiple distributions and architectures. The project maintains a formal security notification process and threat model documentation, indicating mature handling of vulnerability reports. Documentation is comprehensive, including Doxygen-generated API references, a usage guide covering TLS feature configuration, and build guidance for multiple platforms. The codebase receives ongoing maintenance across diverse operating systems and toolchains, including recent work on Windows support through MinGW and AWS-LC integration.