Secure Sockets Layer (SSL)-Klassen
Die folgenden Klassen bieten Unterstützung für sichere Netzwerkkommunikation mit dem Secure Sockets Layer (SSL)-Protokoll, wobei ein natives TLS-Backend, das OpenSSL-Toolkit oder ein geeignetes TLS-Plugin zur Verschlüsselung und Protokollverarbeitung verwendet wird.
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 Enums, die allen SSL-Klassen gemeinsam sind 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.
Verwendung von Verschlüsselung in vernetzten Anwendungen
Verwenden Sie, wann immer möglich, Verschlüsselung beim Transport von Daten über ein Netzwerk. Klartext, d. h. unverschlüsselte Daten, die leicht lesbar sind, geben sensible Daten wie Benutzerinformationen und Informationen über Netzwerksysteme preis.
Verwenden Sie QSslSocket::connectToHostEncrypted(), um eine verschlüsselte Verbindung herzustellen, und prüfen Sie mit QSslSocket::sslHandshakeErrors(), ob SSL-Probleme vorliegen. Verwenden Sie QSslSocket::ignoreSslErrors() mit Vorsicht, da dies zu Sicherheitsrisiken in Ihrer Anwendung führen kann.
Verwenden Sie QSslConfiguration, um starke Sicherheitseinstellungen zu erzwingen. Die unterstützten Protokolle hängen vom SSL-Backend ab, und der Risikograd eines Protokolls kann sich in Zukunft ändern. Sie können ein neueres und sichereres Protokoll mit QSslConfiguration::setProtocol() verwenden. Weitere Informationen zu den verfügbaren Protokollen finden Sie unter QSsl::SslProtocol.
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.
Hinweis: Während Qt immer noch die ältere Version von OpenSSL 1.1.1 unterstützen kann, wenn es aus den Quellen gebaut wird, benötigen die Builds von Qt auf Qt Online Installer OpenSSL 3 zur Laufzeit.
Standardmäßig lädt eine OpenSSL-aktivierte Qt-Bibliothek zur Laufzeit dynamisch jede installierte OpenSSL-Bibliothek. 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
Für einige Arten von Software und für einige Teile der Welt gelten Import- und Exportbeschränkungen. 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.
Weitere Informationen finden Sie unter Exportkontrolle von Qt Framework und Tools.
© 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.