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 incorporar nuevas funciones o mejoras de rendimiento.

Tenemos una hoja de ruta para nuestros planes futuros. También tenemos puntos de referencia para evitar regresiones de rendimiento y permitirle evaluar rustls en su hardware de destino.

Si desea ayudar, consulte 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.

Changelog

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 proporciona funciones inseguras ni criptografía obsoleta por defecto.

Rustls implementa TLS1.2 y TLS1.3 tanto para clientes como para servidores. Consulte la lista completa de funciones de protocolo.

Soporte de plataformas

Si bien Rustls en sí mismo 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, puede reemplazar todas las dependencias criptográficas de rustls. Esta es una ruta para ser portátil a un conjunto más amplio de arquitecturas y entornos, o para cumplir requisitos de cumplimiento normativo. Consulte la documentación de crypto::CryptoProvider para obtener 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 tiene requisitos específicos de plataforma, cumplimiento normativo o funciones.

A partir de 0.24, los usuarios deben proporcionar explícitamente un proveedor de criptografía al construir instancias de ClientConfig o ServerConfig. Consulte la documentación de crypto::CryptoProvider para obtener 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 la crate aws-lc-rs para criptografía. Si bien este proveedor puede ser más difícil de compilar en algunas plataformas, ofrece un rendimiento excelente y un conjunto de funciones completo (incluidos algoritmos poscuánticos).
  • rustls-ring - un proveedor que utiliza la crate ring para criptografía. Este proveedor es más fácil de compilar en una variedad de plataformas, pero tiene un conjunto de funciones más limitado (por ejemplo, no admite algoritmos poscuánticos).

El equipo de Rustls recomienda utilizar la crate rustls-aws-lc-rs por su conjunto de funciones completo y su rendimiento. Consulte las preguntas frecuentes de aws-lc-rs para obtener más detalles sobre las restricciones de soporte de plataforma/arquitectura en aws-lc-rs.

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

(Para versiones de rustls anteriores a 0.24, ambos proveedores se distribuían como parte de la crate rustls, y se utilizaban 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 comenzado a desarrollar proveedores de terceros para Rustls:

Consulte 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 utilizando el asistente stream::Stream, así como E/S asíncrona más compleja utilizando mio. Si ya está utilizando Tokio para un runtime asíncrono, puede preferir utilizar tokio-rustls en lugar de interactuar directamente con rustls.

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

Programa de ejemplo de cliente

El programa de ejemplo de cliente MIO se llama tlsclient-mio.

Algunas ejecuciones de muestra:

$ cargo run --bin tlsclient-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 tlsclient-mio -- --help para ver más opciones.

Programa de ejemplo de servidor

El programa de ejemplo de servidor MIO se llama tlsserver-mio.

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

$ cargo run --bin tlsserver-mio -- --certs test-ca/rsa-2048/end.fullchain --key test-ca/rsa-2048/end.key -p 8443 echo &
$ echo hello world | openssl s_client -ign_eof -quiet -connect localhost:8443
depth=2 CN = ponytown RSA CA
verify error:num=19:self signed certificate in certificate chain
hello world
^C
$ echo hello world | cargo run --bin tlsclient-mio -- --cafile test-ca/rsa-2048/ca.cert --port 8443 localhost
hello world
^C

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

Licencia

Rustls se distribuye bajo las siguientes tres licencias:

  • Licencia Apache versión 2.0.
  • Licencia MIT.
  • Licencia ISC.

Estas se incluyen como LICENSE-APACHE, LICENSE-MIT y LICENSE-ISC respectivamente. Puede utilizar este software bajo los términos de cualquiera de estas licencias, a su elección.

Membresía del proyecto

  • Joe Birr-Pixton (@ctz, Fundador del proyecto - financiado a tiempo completo por Prossimo)
  • Dirkjan Ochtman (@djc, Co-mantenedor)
  • Daniel McCarney (@cpu, Co-mantenedor)
  • Josh Aas (@bdaehlie, Gestión del proyecto)

Código de conducta

Este proyecto adopta el Código de conducta de Rust. Por favor, envíe un correo electrónico a [email protected] para informar cualquier caso de mala conducta, o si tiene algún comentario o pregunta sobre el Código de conducta.

Categorías