Volver a actualizaciones
Nuevo releaseSep 8, 2026

rustls v/0.23.44

Biblioteca TLS con seguridad de memoria en Rust que implementa TLS 1.2 y 1.3 con proveedores criptográficos conectables, modos cliente/servidor y autenticación basada en certificados.

Compartir

Rustls es una biblioteca TLS moderna escrita en Rust.

Estado

Rustls se utiliza en producción en muchas organizaciones y proyectos. Nuestro objetivo es mantener una estabilidad razonable de la superficie de la API, pero la API puede evolucionar a medida que realizamos cambios para adaptarnos a nuevas funcionalidades o mejoras de rendimiento.

Tenemos una hoja de ruta con nuestros planes futuros. También tenemos benchmarks para prevenir regresiones de rendimiento y permitirte evaluar rustls en tu hardware objetivo.

Si deseas ayudar, consulta CONTRIBUTING.md.

Build Status Coverage Status (codecov.io) Documentation Chat OpenSSF Best Practices

Los mantenedores pronuncian "rustls" como rustles (en lugar de rust-TLS), pero no tenemos una opinión firme al respecto.

Registro de cambios

La lista detallada de cambios en cada versión se puede encontrar en https://github.com/rustls/rustls/releases.

Documentación

https://docs.rs/rustls/

Enfoque

Rustls es una biblioteca TLS que tiene como objetivo proporcionar un buen nivel de seguridad criptográfica, no requiere configuración para lograr esa seguridad y no ofrece funcionalidades inseguras ni criptografía obsoleta por defecto.

Rustls implementa TLS1.2 y TLS1.3 tanto para clientes como para servidores. Consulta la lista completa de características del protocolo.

Soporte de plataformas

Aunque Rustls en sí es independiente de la plataforma, requiere el uso de primitivas criptográficas para implementar los algoritmos criptográficos utilizados en TLS. En Rustls, un crypto::CryptoProvider representa una colección de implementaciones de primitivas criptográficas.

Al proporcionar una instancia personalizada de la estructura crypto::CryptoProvider, puedes reemplazar todas las dependencias criptográficas de rustls. Esta es una vía para ser portable a un conjunto más amplio de arquitecturas y entornos, o a requisitos de cumplimiento. Consulta la documentación de crypto::CryptoProvider para más detalles.

Proveedores de criptografía

Desde Rustls 0.22 ha sido posible elegir el proveedor de las primitivas criptográficas que utiliza Rustls. Esto puede resultar atractivo si tienes requisitos específicos de plataforma, cumplimiento o funcionalidades.

A partir de 0.24, los usuarios deben proporcionar explícitamente un proveedor de criptografía al construir instancias de ClientConfig o ServerConfig. Consulta la documentación de crypto::CryptoProvider para más detalles.

Proveedores de primera parte

El proyecto Rustls mantiene actualmente dos proveedores de criptografía:

  • rustls-aws-lc-rs - un proveedor que utiliza el crate aws-lc-rs para criptografía. Aunque este proveedor puede ser más difícil de compilar en algunas plataformas, ofrece un excelente rendimiento y un conjunto completo de funcionalidades (incluidos algoritmos post-cuánticos).
  • rustls-ring - un proveedor que utiliza el crate ring para criptografía. Este proveedor es más fácil de compilar en una variedad de plataformas, pero tiene un conjunto de funcionalidades más limitado (por ejemplo, no admite algoritmos post-cuánticos).

El equipo de Rustls recomienda usar el crate rustls-aws-lc-rs por su conjunto completo de funcionalidades y rendimiento. Consulta las preguntas frecuentes de aws-lc-rs para más detalles sobre las restricciones de soporte de plataforma/arquitectura en aws-lc-rs.

Consulta la documentación de crypto::CryptoProvider para obtener detalles sobre cómo se seleccionan los proveedores.

(Para versiones de rustls anteriores a la 0.24, ambos proveedores se distribuían como parte del crate rustls, y se usaban las características de Cargo para seleccionar el proveedor preferido. La característica aws-lc-rs estaba habilitada por defecto).

Proveedores de terceros

La comunidad también ha desarrollado muchos proveedores de terceros para Rustls. Algunos de especial interés incluyen:

Para más proveedores de terceros, consulta PROVIDERS.md.

Consulta la sección Making a custom CryptoProvider de la documentación para obtener más información sobre este tema.

Código de ejemplo

Nuestro directorio examples contiene demos que muestran cómo manejar E/S usando el helper stream::Stream, así como E/S asíncrona más compleja usando mio. Si ya estás usando Tokio como runtime asíncrono, puede que prefieras usar tokio-rustls en lugar de interactuar directamente con rustls.

Los ejemplos basados en mio son los más completos y se comentan a continuación. Los usuarios nuevos en Rustls pueden preferir revisar los ejemplos simples de cliente/servidor antes de sumergirse en los ejemplos más complejos de MIO.

Programa de ejemplo de cliente

El programa de ejemplo de cliente MIO se llama tls-client-mio.

Algunas ejecuciones de ejemplo:

$ cargo run --bin tls-client-mio -- --http jbp.io
HTTP/1.1 200 OK
Date: Tue, 23 Jun 2026 16:13:40 GMT
Content-Type: text/html; charset=utf-8
Connection: close
(...)

Ejecute cargo run --bin tls-client-mio -- --help para ver más opciones.

Programa de ejemplo del servidor

El programa de ejemplo del servidor MIO se llama tls-server-mio.

Aquí hay una ejecución de muestra; iniciamos un servidor de eco TLS y luego nos conectamos a él con openssl y tls-client-mio:

Categorías