Retour aux mises à jour
New releaseSep 8, 2026

rustls v/0.23.44

Bibliothèque TLS à sûreté mémoire écrite en Rust, implémentant TLS 1.2 et 1.3 avec des fournisseurs cryptographiques enfichables, des modes client/serveur et une authentification par certificats.

Partager

Rustls est une bibliothèque TLS moderne écrite en Rust.

Statut

Rustls est utilisé en production dans de nombreuses organisations et projets. Nous visons à maintenir une stabilité raisonnable de la surface d'API, mais celle-ci peut évoluer à mesure que nous apportons des modifications pour accueillir de nouvelles fonctionnalités ou améliorations de performances.

Nous avons une feuille de route pour nos futurs projets. Nous disposons également de benchmarks pour prévenir les régressions de performances et vous permettre d'évaluer rustls sur votre matériel cible.

Si vous souhaitez contribuer, veuillez consulter CONTRIBUTING.md.

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

Les mainteneurs prononcent "rustls" comme rustles (plutôt que rust-TLS), mais nous n'avons pas d'opinion tranchée à ce sujet.

Journal des modifications

La liste détaillée des changements de chaque version est disponible à l'adresse https://github.com/rustls/rustls/releases.

Documentation

https://docs.rs/rustls/

Approche

Rustls est une bibliothèque TLS qui vise à offrir un bon niveau de sécurité cryptographique, ne nécessite aucune configuration pour atteindre cette sécurité et ne fournit par défaut aucune fonctionnalité unsafe ni cryptographie obsolète.

Rustls implémente TLS1.2 et TLS1.3 pour les clients comme pour les serveurs. Voir la liste complète des fonctionnalités du protocole.

Prise en charge des plateformes

Bien que Rustls soit indépendant de la plateforme, il nécessite l'utilisation de primitives cryptographiques pour implémenter les algorithmes cryptographiques utilisés dans TLS. Dans Rustls, un crypto::CryptoProvider représente un ensemble d'implémentations de primitives cryptographiques.

En fournissant une instance personnalisée de la structure crypto::CryptoProvider, vous pouvez remplacer toutes les dépendances cryptographiques de rustls. C'est une voie vers la portabilité sur un plus large éventail d'architectures et d'environnements, ou vers le respect d'exigences de conformité. Voir la documentation de crypto::CryptoProvider pour plus de détails.

Fournisseurs cryptographiques

Depuis Rustls 0.22, il est possible de choisir le fournisseur des primitives cryptographiques utilisées par Rustls. Cela peut être intéressant si vous avez des exigences spécifiques en matière de plateforme, de conformité ou de fonctionnalités.

Depuis la version 0.24, les utilisateurs doivent fournir explicitement un fournisseur cryptographique lors de la construction des instances ClientConfig ou ServerConfig. Voir la documentation de crypto::CryptoProvider pour plus de détails.

Fournisseurs de première partie

Le projet Rustls maintient actuellement deux fournisseurs cryptographiques :

  • rustls-aws-lc-rs - un fournisseur qui utilise la crate aws-lc-rs pour la cryptographie. Bien que ce fournisseur puisse être plus difficile à compiler sur certaines plateformes, il offre d'excellentes performances et un ensemble de fonctionnalités complet (y compris des algorithmes post-quantiques).
  • rustls-ring - un fournisseur qui utilise la crate ring pour la cryptographie. Ce fournisseur est plus facile à compiler sur diverses plateformes, mais son ensemble de fonctionnalités est plus limité (par exemple, il ne prend pas en charge les algorithmes post-quantiques).

L'équipe Rustls recommande d'utiliser la crate rustls-aws-lc-rs pour son ensemble de fonctionnalités complet et ses performances. Voir la FAQ aws-lc-rs pour plus de détails sur les contraintes de prise en charge des plateformes/architectures dans aws-lc-rs.

Voir la documentation de crypto::CryptoProvider pour plus de détails sur la façon dont les fournisseurs sont sélectionnés.

(Pour les versions de rustls antérieures à 0.24, ces deux fournisseurs étaient inclus dans la crate rustls, et des fonctionnalités Cargo étaient utilisées pour sélectionner le fournisseur préféré. La fonctionnalité aws-lc-rs était activée par défaut.)

Fournisseurs tiers

La communauté a également commencé à développer des fournisseurs tiers pour Rustls :

Voir la section Création d'un CryptoProvider personnalisé de la documentation pour plus d'informations sur ce sujet.

Exemples de code

Notre répertoire examples contient des démos qui montrent comment gérer les entrées/sorties à l'aide de l'assistant stream::Stream, ainsi que des entrées/sorties asynchrones plus complexes utilisant mio. Si vous utilisez déjà Tokio comme runtime asynchrone, vous préférerez peut-être utiliser tokio-rustls plutôt que d'interagir directement avec rustls.

Les exemples basés sur mio sont les plus complets et sont présentés ci-dessous. Les nouveaux utilisateurs de Rustls préféreront peut-être examiner les exemples simples de client/serveur avant de se plonger dans les exemples MIO plus complexes.

Programme d'exemple du client

Le programme d'exemple du client MIO s'appelle tlsclient-mio.

Quelques exemples d'exécution :

$ 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
(...)

Exécutez cargo run --bin tlsclient-mio -- --help pour plus d'options.

Programme d'exemple du serveur

Le programme d'exemple du serveur MIO s'appelle tlsserver-mio.

Voici un exemple d'exécution ; nous démarrons un serveur d'écho TLS, puis nous nous y connectons avec openssl et 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

Exécutez cargo run --bin tlsserver-mio -- --help pour plus d'options.

Licence

Rustls est distribué sous les trois licences suivantes :

  • Apache License version 2.0.
  • Licence MIT.
  • Licence ISC.

Elles sont incluses respectivement sous les noms LICENSE-APACHE, LICENSE-MIT et LICENSE-ISC. Vous pouvez utiliser ce logiciel selon les termes de l'une ou l'autre de ces licences, à votre choix.

Membres du projet

  • Joe Birr-Pixton (@ctz, Fondateur du projet - financé à plein temps par Prossimo)
  • Dirkjan Ochtman (@djc, Co-mainteneur)
  • Daniel McCarney (@cpu, Co-mainteneur)
  • Josh Aas (@bdaehlie, Gestion de projet)

Code de conduite

Ce projet adopte le Code de conduite de Rust. Veuillez envoyer un e-mail à [email protected] pour signaler tout cas de comportement inapproprié, ou si vous avez des commentaires ou des questions sur le Code de conduite.

Catégories