
rustls v/0.23.44
Speichersichere TLS-Bibliothek in Rust, die TLS 1.2 und 1.3 mit austauschbaren Krypto-Anbietern, Client-/Server-Modi und zertifikatsbasierter Authentifizierung implementiert.
Rustls ist eine moderne TLS-Bibliothek, geschrieben in Rust.
Status
Rustls wird in vielen Organisationen und Projekten in der Produktion eingesetzt. Wir streben eine angemessene Stabilität der API-Oberfläche an, aber die API kann sich weiterentwickeln, wenn wir Änderungen vornehmen, um neue Funktionen oder Leistungsverbesserungen zu ermöglichen.
Wir haben eine roadmap für unsere zukünftigen Pläne. Wir haben auch benchmarks, um Leistungsregressionen zu verhindern und es Ihnen zu ermöglichen, rustls auf Ihrer Zielhardware zu bewerten.
Wenn Sie helfen möchten, schauen Sie bitte in CONTRIBUTING.md.
Die Maintainer sprechen „rustls" als „rustles" aus (eher als rust-TLS), aber wir legen keinen großen Wert darauf.
Changelog
Die detaillierte Liste der Änderungen in jeder Version finden Sie unter https://github.com/rustls/rustls/releases.
Dokumentation
Ansatz
Rustls ist eine TLS-Bibliothek, die ein gutes Maß an kryptografischer Sicherheit bieten soll, keine Konfiguration erfordert, um diese Sicherheit zu erreichen, und standardmäßig keine unsicheren Funktionen oder veraltete Kryptografie bietet.
Rustls implementiert TLS1.2 und TLS1.3 für Clients und Server. Siehe die vollständige Liste der Protokollfunktionen.
Plattformunterstützung
Obwohl Rustls selbst plattformunabhängig ist, erfordert es die Verwendung kryptografischer Primitive,
um die in TLS verwendeten Verschlüsselungsalgorithmen zu implementieren. In Rustls
stellt ein crypto::CryptoProvider eine Sammlung von Implementierungen kryptografischer Primitive dar.
Durch die Bereitstellung einer benutzerdefinierten Instanz der crypto::CryptoProvider-Struktur können Sie
alle Kryptoabhängigkeiten von rustls ersetzen. Dies ist ein Weg, um auf eine breitere Palette von Architekturen und Umgebungen übertragbar zu sein oder Compliance-Anforderungen zu erfüllen. Siehe die
crypto::CryptoProvider-Dokumentation für weitere Details.
Kryptografieanbieter
Seit Rustls 0.22 ist es möglich, den Anbieter der kryptografischen Primitive zu wählen, die Rustls verwendet. Das kann attraktiv sein, wenn Sie spezifische Plattform-, Compliance- oder Funktionsanforderungen haben.
Ab 0.24 müssen Benutzer beim Erstellen von ClientConfig- oder
ServerConfig-Instanzen explizit einen Kryptoanbieter angeben. Weitere Details finden Sie in der Dokumentation zu crypto::CryptoProvider.
Erstanbieter
Das Rustls-Projekt unterhält derzeit zwei Kryptoanbieter:
rustls-aws-lc-rs- ein Anbieter, der dieaws-lc-rs-Crate für Kryptografie verwendet. Während dieser Anbieter auf einigen Plattformen schwerer zu erstellen sein kann, bietet er hervorragende Leistung und einen vollständigen Funktionsumfang (einschließlich Post-Quanten-Algorithmen).rustls-ring- ein Anbieter, der diering-Crate für Kryptografie verwendet. Dieser Anbieter ist auf verschiedenen Plattformen einfacher zu erstellen, hat aber einen eingeschränkteren Funktionsumfang (zum Beispiel werden keine Post-Quanten-Algorithmen unterstützt).
Das Rustls-Team empfiehlt die Verwendung der rustls-aws-lc-rs-Crate wegen ihres vollständigen Funktionsumfangs
und ihrer Leistung. Weitere Details zu den Plattform-/Architekturunterstützungsbeschränkungen von aws-lc-rs finden Sie in der aws-lc-rs-FAQ.
Details zur Auswahl der Anbieter finden Sie in der Dokumentation zu crypto::CryptoProvider.
(Für rustls-Versionen vor 0.24 wurden beide Anbieter als Teil der rustls-Crate ausgeliefert, und Cargo-Features wurden verwendet, um den bevorzugten Anbieter auszuwählen. Das aws-lc-rs-Feature war standardmäßig aktiviert.)
Drittanbieter
Die Community hat auch begonnen, Drittanbieter für Rustls zu entwickeln:
boring-rustls-provider- ein in Arbeit befindlicher Anbieter, derboringsslfür Kryptografie verwendet.rustls-ccm- fügt AES-CCM-Verschlüsselungssuiten (TLS 1.2 und 1.3) unter Verwendung vonRustCryptohinzu, für IoT-/Geräteprotokolle mit eingeschränkten Ressourcen (IEEE 2030.5, Matter, RFC 7925).rustls-graviola- ein Anbieter, dergraviolafür Kryptografie verwendet.rustls-mbedtls-provider- ein Anbieter, dermbedtlsfür Kryptografie verwendet.rustls-openssl- ein Anbieter, der OpenSSL für Kryptografie verwendet.rustls-rustcrypto- ein experimenteller Anbieter, der die kryptografischen Primitive vonRustCryptofür Kryptografie verwendet.rustls-symcrypt- ein Anbieter, der die SymCrypt-Bibliothek von Microsoft verwendet.rustls-wolfcrypt-provider- ein in Arbeit befindlicher Anbieter, derwolfCryptfür Kryptografie verwendet.
Weitere Informationen zu diesem Thema finden Sie im Abschnitt Making a custom CryptoProvider der Dokumentation.
Beispielcode
Unser examples-Verzeichnis enthält Demos, die zeigen, wie I/O mit dem stream::Stream-Helfer
sowie komplexere asynchrone I/O mit mio gehandhabt wird. Wenn Sie Tokio bereits als asynchrone Laufzeitumgebung verwenden,
ziehen Sie es möglicherweise vor, tokio-rustls anstelle der direkten Interaktion mit rustls zu verwenden.
Die auf mio basierenden Beispiele sind am vollständigsten und werden unten besprochen. Benutzer, die mit Rustls noch nicht vertraut sind, ziehen es möglicherweise vor, sich zuerst die einfachen Client-/Server-Beispiele anzusehen, bevor sie in die komplexeren MIO-Beispiele eintauchen.
Client-Beispielprogramm
Das MIO-Client-Beispielprogramm heißt tlsclient-mio.
Einige Beispielausführungen:
$ 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
(...)
Führen Sie cargo run --bin tlsclient-mio -- --help aus, um weitere Optionen zu sehen.
Server-Beispielprogramm
Das MIO-Server-Beispielprogramm heißt tlsserver-mio.
Hier ist ein Beispielablauf; wir starten einen TLS-Echo-Server und verbinden uns dann mit
openssl und 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
Führen Sie cargo run --bin tlsserver-mio -- --help aus, um weitere Optionen zu sehen.
Lizenz
Rustls wird unter den folgenden drei Lizenzen vertrieben:
- Apache-Lizenz Version 2.0.
- MIT-Lizenz.
- ISC-Lizenz.
Diese sind als LICENSE-APACHE, LICENSE-MIT bzw. LICENSE-ISC enthalten. Sie können diese Software nach Belieben unter den Bedingungen einer dieser Lizenzen verwenden.
Projektmitgliedschaft
- Joe Birr-Pixton (@ctz, Projektgründer - Vollzeit finanziert von Prossimo)
- Dirkjan Ochtman (@djc, Co-Maintainer)
- Daniel McCarney (@cpu, Co-Maintainer)
- Josh Aas (@bdaehlie, Projektmanagement)
Verhaltenskodex
Dieses Projekt übernimmt den Rust Code of Conduct. Bitte senden Sie eine E-Mail an [email protected], um einen Fall von Fehlverhalten zu melden, oder wenn Sie Kommentare oder Fragen zum Verhaltenskodex haben.