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.

QDtls

Diese Klasse bietet Verschlüsselung für UDP-Sockets

QDtlsClientVerifier

Diese Klasse implementiert die serverseitige Erzeugung und Überprüfung von DTLS-Cookies

QDtlsClientVerifier::GeneratorParameters

Diese Klasse definiert Parameter für den DTLS-Cookie-Generator

QOcspResponse

Diese Klasse stellt die Antwort des Online Certificate Status Protocol dar

QSsl

Deklariert gemeinsame Enums für alle SSL-Klassen in Qt Network

QSslCertificate

Bequeme API für ein X509-Zertifikat

QSslCertificateExtension

API für den Zugriff auf die Erweiterungen eines X509-Zertifikats

QSslCipher

Stellt eine kryptographische SSL-Chiffre dar

QSslConfiguration

Enthält die Konfiguration und den Status einer SSL-Verbindung

QSslDiffieHellmanParameters

Schnittstelle für Diffie-Hellman-Parameter für Server

QSslEllipticCurve

Stellt eine elliptische Kurve zur Verwendung durch elliptische Kurvenchiffrieralgorithmen dar

QSslError

SSL-Fehler

QSslKey

Schnittstelle für private und öffentliche Schlüssel

QSslPreSharedKeyAuthenticator

Authentifizierungsdaten für Pre-Shared-Keys (PSK)-Chiffrierverfahren

QSslServer

Implementiert einen verschlüsselten, sicheren TCP-Server über TLS

QSslSocket

SSL-verschlüsselter Socket sowohl für Clients als auch für Server

QSslSocket::AlertLevel

Beschreibt die Ebene einer Warnmeldung

QSslSocket::AlertType

Zählt die möglichen Codes auf, die eine Warnmeldung haben kann

QDtls::HandshakeState

Beschreibt den aktuellen Status des DTLS-Handshake

QSslSocket::ImplementedClass

Zählt die Klassen auf, die ein TLS-Backend implementiert

QDtls::QDtlsError

Beschreibt die Fehler, die von QDtls und QDtlsClientVerifier gefunden werden können

QOcspResponse::QOcspCertificateStatus

Beschreibt den Online-Zertifikatsstatus

QOcspResponse::QOcspRevocationReason

Beschreibt den Grund für die Sperrung

QSslSocket::SupportedFeature

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.