Secure Sockets Layer (SSL)-Klassen
Die folgenden Klassen bieten Unterstützung für sichere Netzwerkkommunikation unter Verwendung des Secure Sockets Layer (SSL) Protokolls, wobei ein natives TLS Backend, das OpenSSL Toolkit oder ein geeignetes TLS Plugin zur Verschlüsselung und Protokollverarbeitung verwendet wird.
Ab Qt Version 5.15 ist die offiziell unterstützte Version für OpenSSL 1.1.1 oder höher.
Qt Version 5.15.1 aufwärts ist auch mit OpenSSL 3 kompatibel.
Diese Klasse bietet Verschlüsselung für UDP-Sockets | |
Diese Klasse implementiert die serverseitige Erzeugung und Überprüfung von DTLS-Cookies | |
Diese Klasse definiert Parameter für den DTLS-Cookie-Generator | |
Diese Klasse stellt die Antwort des Online Certificate Status Protocol dar | |
Deklariert gemeinsame Enums für alle SSL-Klassen in Qt Network | |
Bequeme API für ein X509-Zertifikat | |
API für den Zugriff auf die Erweiterungen eines X509-Zertifikats | |
Stellt eine kryptographische SSL-Chiffre dar | |
Enthält die Konfiguration und den Status einer SSL-Verbindung | |
Schnittstelle für Diffie-Hellman-Parameter für Server | |
Stellt eine elliptische Kurve zur Verwendung durch elliptische Kurvenchiffrieralgorithmen dar | |
SSL-Fehler | |
Schnittstelle für private und öffentliche Schlüssel | |
Authentifizierungsdaten für Pre-Shared-Keys (PSK)-Chiffrierverfahren | |
Implementiert einen verschlüsselten, sicheren TCP-Server über TLS | |
SSL-verschlüsselter Socket sowohl für Clients als auch für Server | |
Beschreibt die Ebene einer Warnmeldung | |
Zählt die möglichen Codes auf, die eine Warnmeldung haben kann | |
Beschreibt den aktuellen Status des DTLS-Handshake | |
Zählt die Klassen auf, die ein TLS-Backend implementiert | |
Beschreibt die Fehler, die von QDtls und QDtlsClientVerifier gefunden werden können | |
Beschreibt den Online-Zertifikatsstatus | |
Beschreibt den Grund für die Sperrung | |
Listet mögliche Funktionen auf, die ein TLS-Backend unterstützt |
Für Android-Anwendungen siehe Hinzufügen von OpenSSL-Unterstützung für Android.
Aktivieren und Deaktivieren der SSL-Unterstützung beim Erstellen von Qt aus dem Quellcode
Wenn Sie Qt aus dem Quellcode erstellen, erstellt Qt Plugins für native TLS-Bibliotheken, die für das Betriebssystem, für das Sie erstellen, unterstützt werden. Für Windows ist dies Schannel, für macOS ist dies Secure Transport.
Auf allen Plattformen prüft das Konfigurationssystem auf das Vorhandensein des openssl/opensslv.h
Headers, der in den Quell- oder Entwicklerpaketen von OpenSSL enthalten ist. Wenn er gefunden wird, wird das OpenSSL-Backend für Qt aktiviert und gebaut.
Standardmäßig lädt eine OpenSSL-aktivierte Qt-Bibliothek dynamisch jede installierte OpenSSL-Bibliothek zur Laufzeit. Es ist jedoch möglich, gegen die Bibliothek zur Kompilierzeit zu linken, indem Qt mit der Option -openssl-linked
konfiguriert wird.
Wenn Sie eine Version von Qt erstellen, die gegen OpenSSL gelinkt ist, verwendet das Qt-Build-System den CMake-Befehl FindOpenSSL
, um OpenSSL an verschiedenen Standardorten zu finden. Sie können die CMake-Variable OPENSSL_ROOT_DIR setzen, um einen bestimmten Ort zu erzwingen.
Zum Beispiel:
configure -openssl-linked -- -D OPENSSL_ROOT_DIR=<openssl_dir>
Um die SSL-Unterstützung in einem Qt-Build zu deaktivieren, konfigurieren Sie Qt mit der Option -no-openssl
.
Überlegungen beim Packen Ihrer Anwendung
Wenn Sie Ihre Anwendung paketieren, können Sie ein Tool wie windeployqt ausführen, das alle Plugins für die von Ihnen verwendeten Bibliotheken in den Ordner plugins/
kopiert. Für TLS benötigen Sie jedoch nur ein Backend, und Sie können die anderen Plugins vor dem Paketieren Ihrer Anwendung löschen. Wenn Sie beispielsweise unter Windows arbeiten und keine der zusätzlichen Funktionen benötigen, die das OpenSSL-Backend bietet, können Sie darauf verzichten, das qopensslbackend
-Plugin und die OpenSSL-Bibliothek mitzuliefern, und lediglich das qschannelbackend
-Plugin mitliefern.
Es ist jedoch kein Problem, mehrere Backends zu liefern. Qt wird versuchen, die Backends der Reihe nach zu laden (wobei OpenSSL zuerst versucht wird), bis eines erfolgreich geladen ist. Die anderen Backends sind dann unbenutzt.
Datagramm-Transport-Schicht-Sicherheit
Datagram Transport Layer Security (DTLS) ist ein Protokoll, das Sicherheit für datagrammbasierte Anwendungen bietet, indem es sie vor Abhören, Manipulationen oder Nachrichtenfälschung schützt. Das DTLS-Protokoll basiert auf dem stromorientierten Transport Layer Security (TLS)-Protokoll. QtNetwork ermöglicht die Verwendung von DTLS mit dem User Datagram Protocol (UDP), wie in RFC 6347 definiert.
Import- und Exportbeschränkungen
Qt-Binärinstallationsprogramme enthalten die von QtNetwork verwendeten OpenSSL-Bibliotheken. Diese werden jedoch nicht automatisch mit Anwendungen bereitgestellt, die mit Qt erstellt wurden. Import- und Exportbeschränkungen gelten für einige Arten von Software und für einige Teile der Welt. Entwickler, die SSL-Kommunikation in ihren Anwendungen verwenden möchten, sollten entweder sicherstellen, dass ihre Benutzer die entsprechenden Bibliotheken installiert haben, oder sie sollten einen entsprechend qualifizierten Juristen konsultieren, um sicherzustellen, dass Anwendungen, die Code aus dem OpenSSL-Projekt verwenden, korrekt für den Import und Export in den relevanten Regionen der Welt zertifiziert sind.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.