A modern, memory-safe TLS library written in Rust, implementing TLS 1.2 and 1.3 for clients and servers.
Rustls is a modern Transport Layer Security (TLS) library implemented in the Rust programming language. It provides secure communication for client and server applications by implementing TLS 1.2 and 1.3 protocols. The library is designed to eliminate common security pitfalls by being memory-safe and secure by default, requiring no configuration to achieve strong cryptography.
Developers and organizations building networked applications in Rust that require secure, encrypted communications, such as web servers, APIs, IoT devices, and client applications.
Developers choose Rustls for its memory safety guarantees, elimination of configuration errors, and strong security defaults. Its pluggable cryptography system allows flexibility for specific compliance or performance needs while maintaining a robust, auditable codebase.
A modern TLS library in Rust
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implemented in Rust, it eliminates common memory safety vulnerabilities like buffer overflows, as emphasized in the Key Features.
Requires no configuration to achieve strong cryptographic security and excludes obsolete features, aligning with its philosophy of security as the default.
Supports multiple cryptography providers via the CryptoProvider trait, allowing customization for specific needs, as detailed in the Cryptography providers section.
Fully supports TLS 1.2 and TLS 1.3 for both client and server roles, ensuring up-to-date security standards.
Used in production by many organizations, with active maintenance, benchmarks, and a clear roadmap, as stated in the Status section.
Since version 0.24, users must explicitly select and configure a cryptography provider, adding complexity compared to libraries with built-in defaults.
Some recommended providers like aws-lc-rs have limited platform support, which can hinder deployment on certain architectures, as noted in the FAQ.
The API may change to accommodate new features or improvements, potentially causing breaking changes for existing code, as mentioned in the Status.
Lacks integrated asynchronous I/O support; users must rely on external libraries like mio or tokio-rustls for async operations, increasing setup effort.
rustls is an open-source alternative to the following products: