Zurück zu den Updates
New releaseSep 8, 2026

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.

Teilen

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.

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

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

https://docs.rs/rustls/

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 die aws-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 die ring-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:

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.

Kategorien