QSslConfiguration Class

Die Klasse QSslConfiguration enthält die Konfiguration und den Status einer SSL-Verbindung. Mehr...

Kopfzeile: #include <QSslConfiguration>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Typen

enum NextProtocolNegotiationStatus { NextProtocolNegotiationNone, NextProtocolNegotiationNegotiated, NextProtocolNegotiationUnsupported }

Öffentliche Funktionen

QSslConfiguration()
QSslConfiguration(const QSslConfiguration &other)
~QSslConfiguration()
void addCaCertificate(const QSslCertificate &certificate)
void addCaCertificates(const QList<QSslCertificate> &certificates)
bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = QSslCertificate::PatternSyntax::FixedString)
QList<QByteArray> allowedNextProtocols() const
QMap<QByteArray, QVariant> backendConfiguration() const
QList<QSslCertificate> caCertificates() const
QList<QSslCipher> ciphers() const
QSslDiffieHellmanParameters diffieHellmanParameters() const
bool dtlsCookieVerificationEnabled() const
QList<QSslEllipticCurve> ellipticCurves() const
QSslKey ephemeralServerKey() const
(since 6.0) bool handshakeMustInterruptOnError() const
bool isNull() const
QSslCertificate localCertificate() const
QList<QSslCertificate> localCertificateChain() const
(since 6.0) bool missingCertificateIsFatal() const
QByteArray nextNegotiatedProtocol() const
QSslConfiguration::NextProtocolNegotiationStatus nextProtocolNegotiationStatus() const
bool ocspStaplingEnabled() const
QSslCertificate peerCertificate() const
QList<QSslCertificate> peerCertificateChain() const
int peerVerifyDepth() const
QSslSocket::PeerVerifyMode peerVerifyMode() const
QByteArray preSharedKeyIdentityHint() const
QSslKey privateKey() const
QSsl::SslProtocol protocol() const
QSslCipher sessionCipher() const
QSsl::SslProtocol sessionProtocol() const
QByteArray sessionTicket() const
int sessionTicketLifeTimeHint() const
void setAllowedNextProtocols(const QList<QByteArray> &protocols)
void setBackendConfiguration(const QMap<QByteArray, QVariant> &backendConfiguration = QMap<QByteArray, QVariant>())
void setBackendConfigurationOption(const QByteArray &name, const QVariant &value)
void setCaCertificates(const QList<QSslCertificate> &certificates)
void setCiphers(const QList<QSslCipher> &ciphers)
(since 6.0) void setCiphers(const QString &ciphers)
void setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams)
void setDtlsCookieVerificationEnabled(bool enable)
void setEllipticCurves(const QList<QSslEllipticCurve> &curves)
(since 6.0) void setHandshakeMustInterruptOnError(bool interrupt)
void setLocalCertificate(const QSslCertificate &certificate)
void setLocalCertificateChain(const QList<QSslCertificate> &localChain)
(since 6.0) void setMissingCertificateIsFatal(bool cannotRecover)
void setOcspStaplingEnabled(bool enabled)
void setPeerVerifyDepth(int depth)
void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode)
void setPreSharedKeyIdentityHint(const QByteArray &hint)
void setPrivateKey(const QSslKey &key)
void setProtocol(QSsl::SslProtocol protocol)
void setSessionTicket(const QByteArray &sessionTicket)
void setSslOption(QSsl::SslOption option, bool on)
void swap(QSslConfiguration &other)
bool testSslOption(QSsl::SslOption option) const
bool operator!=(const QSslConfiguration &other) const
QSslConfiguration &operator=(const QSslConfiguration &other)
bool operator==(const QSslConfiguration &other) const

Statische öffentliche Mitglieder

const char[] ALPNProtocolHTTP2
const char[] NextProtocolHttp1_1
QSslConfiguration defaultConfiguration()
QSslConfiguration defaultDtlsConfiguration()
void setDefaultConfiguration(const QSslConfiguration &configuration)
void setDefaultDtlsConfiguration(const QSslConfiguration &configuration)
QList<QSslCipher> supportedCiphers()
QList<QSslEllipticCurve> supportedEllipticCurves()
QList<QSslCertificate> systemCaCertificates()

Detaillierte Beschreibung

QSslConfiguration wird von Qt-Netzwerkklassen verwendet, um Informationen über eine offene SSL-Verbindung weiterzugeben und der Anwendung zu ermöglichen, bestimmte Funktionen dieser Verbindung zu steuern.

Die Einstellungen, die QSslConfiguration derzeit unterstützt, sind:

  • Das zu verwendende SSL/TLS-Protokoll
  • Das Zertifikat, das der Gegenstelle während der Verbindung vorgelegt werden soll, und der zugehörige private Schlüssel
  • Die Chiffren, die für die Verschlüsselung der Verbindung verwendet werden dürfen
  • die Liste der Zertifikate der Zertifizierungsstellen, die zur Validierung des Zertifikats der Gegenstelle verwendet werden

Diese Einstellungen werden nur während des Verbindungs-Handshakes angewendet. Eine Einstellung nach dem Aufbau der Verbindung hat keine Auswirkungen.

Der Status, den QSslConfiguration unterstützt, sind:

  • Das Zertifikat, das die Gegenstelle während des Handshakes vorgelegt hat, zusammen mit der Kette, die zu einem CA-Zertifikat führt
  • Die zur Verschlüsselung dieser Sitzung verwendete Chiffre

Der Status kann nur abgerufen werden, wenn die SSL-Verbindung beginnt, aber nicht notwendigerweise, bevor sie beendet ist. Einige Einstellungen können sich im Laufe der SSL-Verbindung ändern, ohne dass ein Neustart erforderlich ist (z. B. kann der Cipher im Laufe der Zeit geändert werden).

Der Zustand von QSslConfiguration-Objekten kann nicht geändert werden.

QSslConfiguration kann mit QSslSocket und der Network Access API verwendet werden.

Beachten Sie, dass das Ändern von Einstellungen in QSslConfiguration nicht ausreicht, um die Einstellungen in der zugehörigen SSL-Verbindung zu ändern. Sie müssen setSslConfiguration auf einem modifizierten QSslConfiguration-Objekt aufrufen, um dies zu erreichen. Das folgende Beispiel zeigt, wie man das Protokoll in einem QSslSocket Objekt auf TLSv1_2 ändert:

QSslConfiguration config = sslSocket.sslConfiguration();
config.setProtocol(QSsl::TlsV1_2);
sslSocket.setSslConfiguration(config);

Siehe auch QSsl::SslProtocol, QSslCertificate, QSslCipher, QSslKey, QSslSocket, QNetworkAccessManager, QSslSocket::sslConfiguration(), und QSslSocket::setSslConfiguration().

Dokumentation der Mitgliedstypen

enum QSslConfiguration::NextProtocolNegotiationStatus

Beschreibt den Status der Next Protocol Negotiation (NPN) oder Application-Layer Protocol Negotiation (ALPN).

KonstanteWertBeschreibung
QSslConfiguration::NextProtocolNegotiationNone0Es wurde (noch) kein Anwendungsprotokoll ausgehandelt.
QSslConfiguration::NextProtocolNegotiationNegotiated1Es wurde ein nächstes Protokoll ausgehandelt (siehe nextNegotiatedProtocol()).
QSslConfiguration::NextProtocolNegotiationUnsupported2Der Client und der Server konnten sich nicht auf ein gemeinsames nächstes Anwendungsprotokoll einigen.

Dokumentation der Mitgliedsfunktionen

QSslConfiguration::QSslConfiguration()

Konstruiert eine leere SSL-Konfiguration. Diese Konfiguration enthält keine gültigen Einstellungen und der Status ist leer. isNull() gibt true zurück, nachdem dieser Konstruktor aufgerufen wurde.

Sobald eine Setter-Methode aufgerufen wird, gibt isNull() false zurück.

QSslConfiguration::QSslConfiguration(const QSslConfiguration &other)

Kopiert die Konfiguration und den Status von other. Wenn other null ist, ist auch dieses Objekt null.

[noexcept] QSslConfiguration::~QSslConfiguration()

Gibt alle von QSslConfiguration gehaltenen Ressourcen frei.

void QSslConfiguration::addCaCertificate(const QSslCertificate &certificate)

Fügt certificate zur CA-Zertifikatsdatenbank dieser Konfiguration hinzu. Die Zertifikatsdatenbank muss vor dem SSL-Handshake festgelegt werden. Die CA-Zertifikatsdatenbank wird vom Socket während der Handshake-Phase verwendet, um das Zertifikat der Gegenstelle zu validieren.

Hinweis: Die Standardkonfiguration verwendet die CA-Zertifikatsdatenbank des Systems. Wenn diese nicht verfügbar ist (wie es unter iOS häufig der Fall ist), ist die Standarddatenbank leer.

Siehe auch caCertificates(), setCaCertificates(), und addCaCertificates().

void QSslConfiguration::addCaCertificates(const QList<QSslCertificate> &certificates)

Fügt certificates zur CA-Zertifikatsdatenbank dieser Konfiguration hinzu. Die Zertifikatsdatenbank muss vor dem SSL-Handshake festgelegt werden. Die CA-Zertifikatsdatenbank wird vom Socket während der Handshake-Phase verwendet, um das Zertifikat der Gegenstelle zu validieren.

Hinweis: Die Standardkonfiguration verwendet die CA-Zertifikatsdatenbank des Systems. Wenn diese nicht verfügbar ist (wie es unter iOS häufig der Fall ist), ist die Standarddatenbank leer.

Siehe auch caCertificates(), setCaCertificates(), und addCaCertificate().

bool QSslConfiguration::addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = QSslCertificate::PatternSyntax::FixedString)

Durchsucht alle Dateien im path nach Zertifikaten, die im angegebenen format kodiert sind, und fügt sie der CA-Zertifikatsdatenbank dieses Sockets hinzu. path muss eine Datei oder ein Muster sein, das mit einer oder mehreren Dateien übereinstimmt, wie durch syntax angegeben. Gibt true zurück, wenn ein oder mehrere Zertifikate zur CA-Zertifikatsdatenbank des Sockets hinzugefügt wurden; andernfalls wird false zurückgegeben.

Die CA-Zertifikatsdatenbank wird vom Socket während der Handshake-Phase verwendet, um das Zertifikat der Gegenstelle zu validieren.

Für eine genauere Kontrolle verwenden Sie addCaCertificate().

Siehe auch addCaCertificate() und QSslCertificate::fromPath().

QList<QByteArray> QSslConfiguration::allowedNextProtocols() const

Diese Funktion gibt die zulässigen Protokolle zurück, die mit dem Server über die TLS-Erweiterung Next Protocol Negotiation (NPN) oder Application-Layer Protocol Negotiation (ALPN) ausgehandelt werden können, wie durch setAllowedNextProtocols() festgelegt.

Siehe auch nextNegotiatedProtocol(), nextProtocolNegotiationStatus(), setAllowedNextProtocols(), und QSslConfiguration::NextProtocolHttp1_1.

QMap<QByteArray, QVariant> QSslConfiguration::backendConfiguration() const

Gibt die Backend-spezifische Konfiguration zurück.

Es werden nur Optionen zurückgegeben, die durch setBackendConfigurationOption() oder setBackendConfiguration() gesetzt wurden. Die interne Standardkonfiguration des Backends wird nicht zurückgegeben.

Siehe auch setBackendConfigurationOption() und setBackendConfiguration().

QList<QSslCertificate> QSslConfiguration::caCertificates() const

Gibt die CA-Zertifikatsdatenbank dieser Verbindung zurück. Die CA-Zertifikatsdatenbank wird vom Socket während der Handshake-Phase verwendet, um das Zertifikat der Gegenstelle zu validieren. Sie kann vor dem Handshake mit setCaCertificates(), oder mit addCaCertificate() und addCaCertificates() geändert werden.

Siehe auch setCaCertificates(), addCaCertificate(), und addCaCertificates().

QList<QSslCipher> QSslConfiguration::ciphers() const

Gibt die aktuelle kryptografische Chiffriersuite dieser Verbindung zurück. Diese Liste wird während der Handshake-Phase zur Auswahl einer Sitzungs-Chiffre verwendet. Die zurückgegebene Liste der Chiffren ist nach absteigender Präferenz geordnet. (d. h., die erste Chiffre in der Liste ist die bevorzugte Chiffre). Die Sitzungs-Chiffre wird die erste in der Liste sein, die auch von der Gegenstelle unterstützt wird.

Standardmäßig kann in der Handshake-Phase jede der von den SSL-Bibliotheken dieses Systems unterstützten Chiffren gewählt werden, die von System zu System unterschiedlich sein können. Die Liste der von den SSL-Bibliotheken dieses Systems unterstützten Ziffern wird von supportedCiphers() zurückgegeben. Sie können die Liste der Chiffren, die für die Auswahl der Sitzungs-Chiffre für diesen Socket verwendet werden, einschränken, indem Sie setCiphers() mit einer Teilmenge der unterstützten Chiffren aufrufen. Sie können zur Verwendung des gesamten Satzes zurückkehren, indem Sie setCiphers() mit der von supportedCiphers() zurückgegebenen Liste aufrufen.

Siehe auch setCiphers() und supportedCiphers().

[static] QSslConfiguration QSslConfiguration::defaultConfiguration()

Gibt die SSL-Standardkonfiguration zurück, die bei neuen SSL-Verbindungen verwendet werden soll.

Die Standard-SSL-Konfiguration besteht aus:

  • kein lokales Zertifikat und kein privater Schlüssel
  • Protokoll SecureProtocols
  • die Standard-CA-Zertifikatsliste des Systems
  • der Chiffrierliste, die der Liste der von den SSL-Bibliotheken unterstützten SSL-Chiffren mit einer Länge von 128 Bit oder mehr entspricht

Siehe auch supportedCiphers() und setDefaultConfiguration().

[static] QSslConfiguration QSslConfiguration::defaultDtlsConfiguration()

Gibt die Standard-DTLS-Konfiguration zurück, die in neuen DTLS-Verbindungen verwendet werden soll.

Die Standard-DTLS-Konfiguration besteht aus:

  • kein lokales Zertifikat und kein privater Schlüssel
  • Protokoll DtlsV1_2OrLater
  • die Standard-CA-Zertifikatsliste des Systems
  • die Chiffrierliste, die der Liste der von den SSL-Bibliotheken unterstützten TLS 1.2-Chiffren entspricht, die 128 oder mehr geheime Bits für die Chiffre verwenden.

Siehe auch setDefaultDtlsConfiguration().

QSslDiffieHellmanParameters QSslConfiguration::diffieHellmanParameters() const

Ruft den aktuellen Satz von Diffie-Hellman-Parametern ab.

Wenn keine Diffie-Hellman-Parameter festgelegt wurden, verwendet das Objekt QSslConfiguration standardmäßig die 2048-Bit-MODP-Gruppe aus RFC 3526.

Hinweis: Die Standardparameter können sich in zukünftigen Qt-Versionen ändern. Bitte prüfen Sie die Dokumentation der von Ihnen verwendeten Qt-Version, um zu erfahren, welche Standardwerte diese Version verwendet.

Siehe auch setDiffieHellmanParameters().

bool QSslConfiguration::dtlsCookieVerificationEnabled() const

Diese Funktion gibt true zurück, wenn die DTLS-Cookie-Verifizierung auf einem serverseitigen Socket aktiviert wurde.

Siehe auch setDtlsCookieVerificationEnabled().

QList<QSslEllipticCurve> QSslConfiguration::ellipticCurves() const

Gibt die aktuelle Liste der elliptischen Kurven für diese Verbindung zurück. Diese Liste wird während der Handshake-Phase zur Auswahl einer elliptischen Kurve verwendet (bei Verwendung einer elliptischen Kurvenchiffre). Die zurückgegebene Liste der Kurven ist nach absteigender Präferenz geordnet (d. h. die erste Kurve in der Liste ist die am meisten bevorzugte).

Standardmäßig kann die Handshake-Phase jede der Kurven wählen, die von den SSL-Bibliotheken dieses Systems unterstützt werden, die von System zu System variieren können. Die Liste der von den SSL-Bibliotheken dieses Systems unterstützten Kurven wird von QSslSocket::supportedEllipticCurves() zurückgegeben.

Sie können die Liste der Kurven, die für die Auswahl der Sitzungs-Chiffre für diesen Socket verwendet werden, einschränken, indem Sie setEllipticCurves() mit einer Teilmenge der unterstützten Chiffren aufrufen. Sie können zur Verwendung des gesamten Satzes zurückkehren, indem Sie setEllipticCurves() mit der von QSslSocket::supportedEllipticCurves() zurückgegebenen Liste aufrufen.

Siehe auch setEllipticCurves.

QSslKey QSslConfiguration::ephemeralServerKey() const

Gibt den ephemeren Serverschlüssel zurück, der für Verschlüsselungsalgorithmen mit Vorwärtsgeheimnis verwendet wird, z. B. DHE-RSA-AES128-SHA.

Der ephemere Schlüssel ist nur verfügbar, wenn er im Client-Modus ausgeführt wird, d. h. QSslSocket::SslClientMode. Bei Ausführung im Servermodus oder bei Verwendung eines Verschlüsselungsalgorithmus ohne Vorwärtsgeheimnis wird ein Nullschlüssel zurückgegeben. Der ephemere Serverschlüssel wird gesetzt, bevor das encrypted()-Signal ausgegeben wird.

[since 6.0] bool QSslConfiguration::handshakeMustInterruptOnError() const

Gibt true zurück, wenn ein Verifizierungs-Callback QSslSocket::handshakeInterruptedOnError() frühzeitig ausgibt, bevor der Handshake abgeschlossen ist.

Hinweis: Diese Funktion gibt für alle Backends außer OpenSSL immer false zurück.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch setHandshakeMustInterruptOnError(), QSslSocket::handshakeInterruptedOnError(), und QSslSocket::continueInterruptedHandshake().

bool QSslConfiguration::isNull() const

Gibt true zurück, wenn dies ein Null-Objekt QSslConfiguration ist.

Ein QSslConfiguration Objekt ist null, wenn es standardmäßig konstruiert wurde und keine Setter-Methoden aufgerufen wurden.

Siehe auch setProtocol(), setLocalCertificate(), setPrivateKey(), setCiphers(), und setCaCertificates().

QSslCertificate QSslConfiguration::localCertificate() const

Gibt das Zertifikat zurück, das der Gegenstelle während des SSL-Handshake-Prozesses vorgelegt wird.

Siehe auch setLocalCertificate().

QList<QSslCertificate> QSslConfiguration::localCertificateChain() const

Gibt die Zertifikatskette zurück, die der Gegenstelle während des SSL-Handshake-Prozesses vorgelegt wird.

Siehe auch setLocalCertificateChain() und localCertificate().

[since 6.0] bool QSslConfiguration::missingCertificateIsFatal() const

Gibt true zurück, wenn Fehler mit dem Code QSslError::NoPeerCertificate nicht ignoriert werden können.

Hinweis: Gibt immer false für alle TLS-Backends außer OpenSSL zurück.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch QSslSocket::ignoreSslErrors() und setMissingCertificateIsFatal().

QByteArray QSslConfiguration::nextNegotiatedProtocol() const

Diese Funktion gibt das mit dem Server ausgehandelte Protokoll zurück, wenn die TLS-Erweiterung Next Protocol Negotiation (NPN) oder Application-Layer Protocol Negotiation (ALPN) aktiviert war. Damit die NPN/ALPN-Erweiterung aktiviert werden kann, muss setAllowedNextProtocols() explizit aufgerufen werden, bevor eine Verbindung zum Server hergestellt wird.

Wenn kein Protokoll ausgehandelt werden konnte oder die Erweiterung nicht aktiviert wurde, gibt diese Funktion ein QByteArray zurück, das null ist.

Siehe auch setAllowedNextProtocols() und nextProtocolNegotiationStatus().

QSslConfiguration::NextProtocolNegotiationStatus QSslConfiguration::nextProtocolNegotiationStatus() const

Diese Funktion gibt den Status der Next Protocol Negotiation (NPN) oder Application-Layer Protocol Negotiation (ALPN) zurück. Wenn die Funktion nicht durch setAllowedNextProtocols() aktiviert wurde, gibt diese Funktion NextProtocolNegotiationNone zurück. Der Status wird gesetzt, bevor das Signal encrypted() ausgegeben wird.

Siehe auch setAllowedNextProtocols(), allowedNextProtocols(), nextNegotiatedProtocol(), und QSslConfiguration::NextProtocolNegotiationStatus.

bool QSslConfiguration::ocspStaplingEnabled() const

Gibt true zurück, wenn OCSP Stapling mit setOCSPStaplingEnabled() aktiviert wurde, andernfalls false (dies ist der Standardwert).

Siehe auch setOcspStaplingEnabled().

QSslCertificate QSslConfiguration::peerCertificate() const

Gibt das digitale Zertifikat der Gegenstelle zurück (d. h. das unmittelbare Zertifikat des Hosts, mit dem Sie verbunden sind) oder ein Null-Zertifikat, wenn die Gegenstelle kein Zertifikat zugewiesen hat.

Das Peer-Zertifikat wird während der Handshake-Phase automatisch überprüft, so dass diese Funktion normalerweise verwendet wird, um das Zertifikat zur Anzeige oder zu Verbindungsdiagnosezwecken zu holen. Es enthält Informationen über die Gegenstelle, einschließlich ihres Hostnamens, des Zertifikatsausstellers und des öffentlichen Schlüssels der Gegenstelle.

Da das Peer-Zertifikat während der Handshake-Phase festgelegt wird, ist es sicher, auf das Peer-Zertifikat von einem Steckplatz aus zuzugreifen, der mit dem QSslSocket::sslErrors()-Signal, QNetworkReply::sslErrors()-Signal oder dem QSslSocket::encrypted()-Signal verbunden ist.

Wenn ein Null-Zertifikat zurückgegeben wird, kann dies bedeuten, dass der SSL-Handshake fehlgeschlagen ist, dass der Host, mit dem Sie verbunden sind, kein Zertifikat hat oder dass keine Verbindung besteht.

Wenn Sie die komplette Zertifikatskette der Gegenstelle überprüfen wollen, verwenden Sie peerCertificateChain(), um sie alle auf einmal zu erhalten.

Siehe auch peerCertificateChain(), QSslSocket::sslErrors(), QSslSocket::ignoreSslErrors(), QNetworkReply::sslErrors(), und QNetworkReply::ignoreSslErrors().

QList<QSslCertificate> QSslConfiguration::peerCertificateChain() const

Gibt die Kette der digitalen Zertifikate der Gegenstelle zurück, beginnend mit dem unmittelbaren Zertifikat der Gegenstelle und endend mit dem Zertifikat der CA.

Die Zertifikate der Gegenstelle werden während der Handshake-Phase automatisch überprüft. Diese Funktion wird normalerweise verwendet, um Zertifikate zur Anzeige zu holen oder um eine Verbindungsdiagnose durchzuführen. Zertifikate enthalten Informationen über die Gegenstelle und die Zertifikatsaussteller, einschließlich des Hostnamens, der Ausstellernamen und der öffentlichen Schlüssel der Aussteller.

Da das Peer-Zertifikat während der Handshake-Phase festgelegt wird, ist es sicher, auf das Peer-Zertifikat von einem Slot aus zuzugreifen, der mit dem QSslSocket::sslErrors()-Signal, QNetworkReply::sslErrors()-Signal oder dem QSslSocket::encrypted()-Signal verbunden ist.

Wenn eine leere Liste zurückgegeben wird, kann dies bedeuten, dass der SSL-Handshake fehlgeschlagen ist, dass der Host, mit dem Sie verbunden sind, kein Zertifikat hat oder dass keine Verbindung besteht.

Wenn Sie nur das unmittelbare Zertifikat der Gegenstelle erhalten möchten, verwenden Sie peerCertificate().

Siehe auch peerCertificate(), QSslSocket::sslErrors(), QSslSocket::ignoreSslErrors(), QNetworkReply::sslErrors(), und QNetworkReply::ignoreSslErrors().

int QSslConfiguration::peerVerifyDepth() const

Gibt die maximale Anzahl der Zertifikate in der Zertifikatskette der Gegenstelle zurück, die während der SSL-Handshake-Phase geprüft werden sollen, oder 0 (Standard), wenn keine maximale Tiefe festgelegt wurde, was bedeutet, dass die gesamte Zertifikatskette geprüft werden soll.

Die Zertifikate werden in der Ausgabereihenfolge geprüft, beginnend mit dem eigenen Zertifikat der Gegenstelle, dann das Zertifikat des Ausstellers und so weiter.

Siehe auch setPeerVerifyDepth() und peerVerifyMode().

QSslSocket::PeerVerifyMode QSslConfiguration::peerVerifyMode() const

Gibt den Verifizierungsmodus zurück. Dieser Modus entscheidet, ob QSslSocket ein Zertifikat von der Gegenstelle anfordern soll (d.h. der Client fordert ein Zertifikat vom Server an oder der Server fordert ein Zertifikat vom Client an) und ob dieses Zertifikat gültig sein muss.

Der Standardmodus ist AutoVerifyPeer, was QSslSocket anweist, VerifyPeer für Clients und QueryPeer für Server zu verwenden.

Siehe auch setPeerVerifyMode().

QByteArray QSslConfiguration::preSharedKeyIdentityHint() const

Gibt den Hinweis auf die Identität zurück.

Siehe auch setPreSharedKeyIdentityHint().

QSslKey QSslConfiguration::privateKey() const

Gibt den SSL key zurück, der dieser Verbindung zugewiesen wurde, oder einen Nullschlüssel, wenn noch keiner zugewiesen wurde.

Siehe auch setPrivateKey() und localCertificate().

QSsl::SslProtocol QSslConfiguration::protocol() const

Gibt die Protokolleinstellung für diese SSL-Konfiguration zurück.

Siehe auch setProtocol().

QSslCipher QSslConfiguration::sessionCipher() const

Gibt die kryptografische Chiffre des Sockets cipher zurück oder eine Null-Chiffre, wenn die Verbindung nicht verschlüsselt ist. Die Chiffre des Sockets für die Sitzung wird während der Handshake-Phase festgelegt. Die Chiffre wird zum Ver- und Entschlüsseln der über den Socket übertragenen Daten verwendet.

Die SSL-Infrastruktur bietet auch Funktionen zur Festlegung der geordneten Liste von Chiffren, aus der die Handshake-Phase schließlich die Sitzungs-Chiffre auswählt. Diese geordnete Liste muss vorhanden sein, bevor die Handshake-Phase beginnt.

Siehe auch ciphers(), setCiphers(), und supportedCiphers().

QSsl::SslProtocol QSslConfiguration::sessionProtocol() const

Gibt das SSL/TLS-Protokoll des Sockets zurück oder UnknownProtocol, wenn die Verbindung nicht verschlüsselt ist. Das Protokoll des Sockets für die Sitzung wird während der Handshake-Phase festgelegt.

Siehe auch protocol() und setProtocol().

QByteArray QSslConfiguration::sessionTicket() const

Wenn QSsl::SslOptionDisableSessionPersistence ausgeschaltet war, gibt diese Funktion das im SSL-Handshake verwendete Sitzungsticket im ASN.1-Format zurück, das z. B. auf der Festplatte gespeichert werden kann. Wenn kein Sitzungsticket verwendet wurde oder QSsl::SslOptionDisableSessionPersistence nicht ausgeschaltet war, gibt diese Funktion ein leeres QByteArray zurück.

Hinweis: Wenn Sie das Sitzungsticket auf der Festplatte o.ä. speichern, achten Sie darauf, dass Sie die Sitzung nicht einem potenziellen Angreifer preisgeben, da die Kenntnis der Sitzung das Abhören von Daten ermöglicht, die mit den Sitzungsparametern verschlüsselt sind.

Siehe auch setSessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption(), und QSslSocket::newSessionTicketReceived().

int QSslConfiguration::sessionTicketLifeTimeHint() const

Wenn QSsl::SslOptionDisableSessionPersistence ausgeschaltet war, gibt diese Funktion den vom Server gesendeten Hinweis auf die Lebensdauer des Sitzungstickets zurück (der 0 sein kann). Wenn der Server kein Sitzungsticket gesendet hat (z. B. bei der Wiederaufnahme einer Sitzung oder wenn der Server es nicht unterstützt) oder QSsl::SslOptionDisableSessionPersistence nicht ausgeschaltet war, gibt diese Funktion -1 zurück.

Siehe auch sessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption(), und QSslSocket::newSessionTicketReceived().

void QSslConfiguration::setAllowedNextProtocols(const QList<QByteArray> &protocols)

Diese Funktion legt die zulässigen protocols fest, die mit dem Server über die TLS-Erweiterung Next Protocol Negotiation (NPN) oder Application-Layer Protocol Negotiation (ALPN) ausgehandelt werden; jedes Element in protocols muss ein zulässiges Protokoll definieren. Die Funktion muss vor dem Verbindungsaufbau explizit aufgerufen werden, um die NPN/ALPN-Erweiterung im SSL-Handshake zu senden. Ob die Aushandlung erfolgreich war oder nicht, kann über nextProtocolNegotiationStatus() abgefragt werden.

Siehe auch nextNegotiatedProtocol(), nextProtocolNegotiationStatus(), allowedNextProtocols(), und QSslConfiguration::NextProtocolHttp1_1.

void QSslConfiguration::setBackendConfiguration(const QMap<QByteArray, QVariant> &backendConfiguration = QMap<QByteArray, QVariant>())

Setzt oder löscht die Backend-spezifische Konfiguration.

Ohne einen backendConfiguration Parameter wird diese Funktion die Backend-spezifische Konfiguration löschen. Weitere Informationen über die unterstützten Optionen finden Sie in der Dokumentation von setBackendConfigurationOption().

Siehe auch backendConfiguration() und setBackendConfigurationOption().

void QSslConfiguration::setBackendConfigurationOption(const QByteArray &name, const QVariant &value)

Setzt die Option name in der Backend-spezifischen Konfiguration auf value.

Die vom OpenSSL (>= 1.0.2) Backend unterstützten Optionen sind in der Dokumentation der unterstützten Konfigurationsdateibefehle verfügbar. Der erwartete Typ für den Parameter value ist QByteArray für alle Optionen. Die Beispiele zeigen, wie einige der Optionen zu verwenden sind.

Hinweis: Die Backend-spezifische Konfiguration wird nach der allgemeinen Konfiguration angewendet. Die Verwendung der Backend-spezifischen Konfiguration, um eine allgemeine Konfigurationsoption erneut zu setzen, überschreibt die allgemeine Konfigurationsoption.

Siehe auch backendConfiguration() und setBackendConfiguration().

void QSslConfiguration::setCaCertificates(const QList<QSslCertificate> &certificates)

Setzt die CA-Zertifikatsdatenbank dieses Sockels auf certificates. Die Zertifikatsdatenbank muss vor dem SSL-Handshake eingestellt werden. Die CA-Zertifikatsdatenbank wird vom Socket während der Handshake-Phase verwendet, um das Zertifikat der Gegenstelle zu validieren.

Hinweis: Die Standardkonfiguration verwendet die Zertifikatsdatenbank der System-CA. Wenn diese nicht verfügbar ist (wie es unter iOS häufig der Fall ist), ist die Standarddatenbank leer.

Siehe auch caCertificates(), addCaCertificates(), und addCaCertificate().

void QSslConfiguration::setCiphers(const QList<QSslCipher> &ciphers)

Setzt die kryptographische Cipher-Suite für diesen Socket auf ciphers, die eine Teilmenge der Cipher in der von supportedCiphers() zurückgegebenen Liste enthalten muss.

Die Einschränkung der Cipher-Suite muss vor der Handshake-Phase erfolgen, in der die Sitzungs-Chiffre ausgewählt wird.

Siehe auch ciphers() und supportedCiphers().

[since 6.0] void QSslConfiguration::setCiphers(const QString &ciphers)

Legt die kryptografische Chiffriersuite für diese Konfiguration auf ciphers fest, bei der es sich um eine durch Doppelpunkte getrennte Liste von Chiffriersuitennamen handelt. Die Chiffren werden in der Reihenfolge ihrer Präferenz aufgelistet, beginnend mit der am meisten bevorzugten Chiffre. Jeder Chiffrename in ciphers muss der Name einer Chiffre in der Liste sein, die von supportedCiphers() zurückgegeben wird. Die Einschränkung der Chiffriersuite muss vor der Handshake-Phase erfolgen, in der die Sitzungs-Chiffre ausgewählt wird.

Hinweis: Mit dem Schannel-Backend wird die Reihenfolge der Chiffren ignoriert und Schannel wählt die sicherste Chiffre während des Handshakes aus.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch ciphers().

[static] void QSslConfiguration::setDefaultConfiguration(const QSslConfiguration &configuration)

Legt die Standard-SSL-Konfiguration für neue SSL-Verbindungen auf configuration fest. Bestehende Verbindungen sind von diesem Aufruf nicht betroffen.

Siehe auch supportedCiphers() und defaultConfiguration().

[static] void QSslConfiguration::setDefaultDtlsConfiguration(const QSslConfiguration &configuration)

Legt die Standard-DTLS-Konfiguration fest, die in neuen DTLS-Verbindungen verwendet werden soll: configuration. Bestehende Verbindungen sind von diesem Aufruf nicht betroffen.

Siehe auch defaultDtlsConfiguration().

void QSslConfiguration::setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams)

Legt einen benutzerdefinierten Satz von Diffie-Hellman-Parametern fest, die von diesem Socket verwendet werden sollen, wenn er als Server für dhparams fungiert.

Wenn keine Diffie-Hellman-Parameter festgelegt wurden, verwendet das Objekt QSslConfiguration standardmäßig die 2048-Bit-MODP-Gruppe aus RFC 3526.

Seit 6.7 können Sie einen leeren Diffie-Hellman-Parameter angeben, um die automatische Auswahl zu verwenden (siehe SSL_CTX_set_dh_auto von openssl), wenn das tls-Backend dies unterstützt.

Hinweis: Die Standardparameter können sich in zukünftigen Qt-Versionen ändern. Bitte prüfen Sie die Dokumentation der genauen Qt-Version, die Sie verwenden, um zu wissen, welche Standardwerte diese Version verwendet.

Siehe auch diffieHellmanParameters().

void QSslConfiguration::setDtlsCookieVerificationEnabled(bool enable)

Diese Funktion aktiviert die DTLS-Cookie-Überprüfung, wenn enable wahr ist.

Siehe auch dtlsCookieVerificationEnabled().

void QSslConfiguration::setEllipticCurves(const QList<QSslEllipticCurve> &curves)

Setzt die Liste der von diesem Socket zu verwendenden elliptischen Kurven auf curves, die eine Teilmenge der Kurven in der von supportedEllipticCurves() zurückgegebenen Liste enthalten muss.

Die Einschränkung der elliptischen Kurven muss vor der Handshake-Phase erfolgen, in der die Sitzungs-Chiffre ausgewählt wird.

Siehe auch ellipticCurves.

[since 6.0] void QSslConfiguration::setHandshakeMustInterruptOnError(bool interrupt)

Wenn interrupt wahr ist und das zugrundeliegende Backend diese Option unterstützt, werden Fehler, die während der Zertifikatsüberprüfung gefunden werden, sofort durch die Ausgabe von QSslSocket::handshakeInterruptedOnError() gemeldet. Dies ermöglicht es, den noch nicht abgeschlossenen Handshake zu stoppen und eine entsprechende Warnmeldung an eine Gegenstelle zu senden. In diesem Fall ist keine besondere Aktion seitens der Anwendung erforderlich. QSslSocket schließt die Verbindung nach dem Senden der Warnmeldung. Wenn die Anwendung nach Prüfung des Fehlers den Handshake fortsetzen will, muss sie QSslSocket::continueInterruptedHandshake() von ihrer Slot-Funktion aus aufrufen. Die Signal-Slot-Verbindung muss direkt sein.

Hinweis: Wenn die Unterbrechung des Handshakes aktiviert ist, werden Fehler, die sonst von QSslSocket::peerVerifyError() gemeldet würden, stattdessen nur von QSslSocket::handshakeInterruptedOnError() gemeldet.

Hinweis: Selbst wenn der Handshake fortgesetzt wurde, werden diese Fehler bei der Ausgabe des QSslSocket::sslErrors()-Signals gemeldet (und müssen daher im entsprechenden Funktionsslot ignoriert werden).

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch handshakeMustInterruptOnError(), QSslSocket::handshakeInterruptedOnError(), und QSslSocket::continueInterruptedHandshake().

void QSslConfiguration::setLocalCertificate(const QSslCertificate &certificate)

Legt das Zertifikat, das der Gegenstelle während des SSL-Handshakes vorgelegt wird, auf certificate fest.

Die Einstellung des Zertifikats nach dem Aufbau der Verbindung hat keine Auswirkungen.

Ein Zertifikat ist das Mittel zur Identifizierung im SSL-Prozess. Das lokale Zertifikat wird von der Gegenstelle verwendet, um die Identität des lokalen Benutzers anhand seiner Liste von Zertifizierungsstellen zu überprüfen. In den meisten Fällen, z. B. beim HTTP-Webbrowsing, identifizieren sich nur die Server gegenüber den Clients, so dass der Client kein Zertifikat sendet.

Siehe auch localCertificate().

void QSslConfiguration::setLocalCertificateChain(const QList<QSslCertificate> &localChain)

Stellt die Zertifikatskette, die der Gegenstelle während des SSL-Handshakes vorgelegt werden soll, auf localChain ein.

Die Einstellung der Zertifikatskette nach dem Aufbau der Verbindung hat keine Auswirkungen.

Ein Zertifikat ist das Mittel zur Identifizierung im SSL-Prozess. Das lokale Zertifikat wird von der Gegenstelle verwendet, um die Identität des lokalen Benutzers anhand seiner Liste von Zertifizierungsstellen zu überprüfen. In den meisten Fällen, z. B. beim HTTP-Webbrowsing, identifizieren sich nur die Server gegenüber den Clients, so dass der Client kein Zertifikat sendet.

Im Gegensatz zu QSslConfiguration::setLocalCertificate() können Sie bei dieser Methode alle Zwischenzertifikate angeben, die für die Validierung Ihres Zertifikats erforderlich sind. Das erste Element in der Liste muss das Blattzertifikat sein.

Siehe auch localCertificateChain().

[since 6.0] void QSslConfiguration::setMissingCertificateIsFatal(bool cannotRecover)

Wenn cannotRecover wahr ist und der Verifizierungsmodus QSslSocket::VerifyPeer oder QSslSocket::AutoVerifyPeer (für einen clientseitigen Socket) verwendet wird, wird das fehlende Zertifikat der Gegenstelle als nicht behebbarer Fehler behandelt, der nicht ignoriert werden kann. Eine entsprechende Warnmeldung wird an die Gegenstelle gesendet, bevor die Verbindung geschlossen wird.

Hinweis: Nur verfügbar, wenn Qt mit OpenSSL-Backend konfiguriert und gebaut wurde.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch QSslSocket::ignoreSslErrors(), QSslSocket::PeerVerifyMode, und missingCertificateIsFatal().

void QSslConfiguration::setOcspStaplingEnabled(bool enabled)

Wenn enabled wahr ist, sendet der Client QSslSocket eine Zertifikatsstatusanforderung an seine Gegenstelle, wenn ein Handshake eingeleitet wird. Während des Handshakes prüft QSslSocket die Antwort des Servers. Dieser Wert muss gesetzt werden, bevor der Handshake beginnt.

Siehe auch ocspStaplingEnabled().

void QSslConfiguration::setPeerVerifyDepth(int depth)

Legt die maximale Anzahl der Zertifikate in der Zertifikatskette der Gegenstelle fest, die während der SSL-Handshake-Phase geprüft werden sollen, und zwar auf depth. Die Einstellung einer Tiefe von 0 bedeutet, dass keine maximale Tiefe festgelegt wird, was bedeutet, dass die gesamte Zertifikatskette geprüft werden soll.

Die Zertifikate werden in der Reihenfolge der Ausstellung geprüft, beginnend mit dem eigenen Zertifikat der Gegenstelle, dann das Zertifikat des Ausstellers und so weiter.

Siehe auch peerVerifyDepth() und setPeerVerifyMode().

void QSslConfiguration::setPeerVerifyMode(QSslSocket::PeerVerifyMode mode)

Setzt den Verifizierungsmodus auf mode. Dieser Modus entscheidet, ob QSslSocket ein Zertifikat von der Gegenstelle anfordert (d. h. der Client fordert ein Zertifikat vom Server an oder der Server fordert ein Zertifikat vom Client an) und ob dieses Zertifikat gültig sein muss.

Der Standardmodus ist AutoVerifyPeer, was QSslSocket anweist, VerifyPeer für Clients und QueryPeer für Server zu verwenden.

Siehe auch peerVerifyMode().

void QSslConfiguration::setPreSharedKeyIdentityHint(const QByteArray &hint)

Setzt den Identitätshinweis für eine Preshared-Key-Authentifizierung auf hint. Dies wirkt sich auf den nächsten initiierten Handshake aus; der Aufruf dieser Funktion auf einem bereits verschlüsselten Socket hat keinen Einfluss auf den Identitätshinweis des Sockets.

Der Identitäts-Hinweis wird nur in QSslSocket::SslServerMode verwendet!

Siehe auch preSharedKeyIdentityHint().

void QSslConfiguration::setPrivateKey(const QSslKey &key)

Setzt den privaten Schlüssel der Verbindung key auf key. Der private Schlüssel und das lokale certificate werden von Clients und Servern verwendet, die ihre Identität gegenüber SSL-Peers nachweisen müssen.

Sowohl der Schlüssel als auch das lokale Zertifikat sind erforderlich, wenn Sie einen SSL-Server-Socket erstellen. Wenn Sie einen SSL-Client-Socket erstellen, sind der Schlüssel und das lokale Zertifikat erforderlich, wenn sich Ihr Client gegenüber einem SSL-Server identifizieren muss.

Siehe auch privateKey() und setLocalCertificate().

void QSslConfiguration::setProtocol(QSsl::SslProtocol protocol)

Setzt die Protokolleinstellung für diese Konfiguration auf protocol.

Die Einstellung des Protokolls hat keine Auswirkungen, wenn die Verbindung bereits hergestellt wurde.

Siehe auch protocol().

void QSslConfiguration::setSessionTicket(const QByteArray &sessionTicket)

Legt das Sitzungsticket fest, das in einem SSL-Handshake verwendet werden soll. QSsl::SslOptionDisableSessionPersistence muss ausgeschaltet sein, damit dies funktioniert, und sessionTicket muss im ASN.1-Format vorliegen, wie es von sessionTicket() zurückgegeben wird.

Siehe auch sessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption(), und QSslSocket::newSessionTicketReceived().

void QSslConfiguration::setSslOption(QSsl::SslOption option, bool on)

Aktiviert oder deaktiviert eine SSL-Kompatibilität option. Wenn on wahr ist, ist option aktiviert. Wenn on falsch ist, ist option deaktiviert.

Siehe auch testSslOption().

[static] QList<QSslCipher> QSslConfiguration::supportedCiphers()

Gibt die Liste der von diesem System unterstützten kryptografischen Chiffren zurück. Diese Liste wird von den SSL-Bibliotheken des Systems festgelegt und kann von System zu System variieren.

Siehe auch ciphers() und setCiphers().

[static] QList<QSslEllipticCurve> QSslConfiguration::supportedEllipticCurves()

Gibt die Liste der elliptischen Kurven zurück, die von diesem System unterstützt werden. Diese Liste wird von den SSL-Bibliotheken des Systems festgelegt und kann von System zu System variieren.

Siehe auch ellipticCurves() und setEllipticCurves().

[noexcept] void QSslConfiguration::swap(QSslConfiguration &other)

Tauscht diese SSL-Konfigurationsinstanz mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

[static] QList<QSslCertificate> QSslConfiguration::systemCaCertificates()

Diese Funktion liefert die vom Betriebssystem bereitgestellte CA-Zertifikatsdatenbank. Die von dieser Funktion zurückgegebene CA-Zertifikatsdatenbank wird zur Initialisierung der von caCertificates() zurückgegebenen Datenbank auf dem Standard QSslConfiguration verwendet.

Siehe auch caCertificates(), setCaCertificates(), defaultConfiguration(), addCaCertificate(), und addCaCertificates().

bool QSslConfiguration::testSslOption(QSsl::SslOption option) const

Gibt true zurück, wenn die angegebene SSL-Kompatibilität option aktiviert ist.

Siehe auch setSslOption().

bool QSslConfiguration::operator!=(const QSslConfiguration &other) const

Gibt true zurück, wenn sich dieses QSslConfiguration von other unterscheidet. Zwei QSslConfiguration -Objekte werden als unterschiedlich betrachtet, wenn ein Zustand oder eine Einstellung unterschiedlich ist.

Siehe auch operator==().

QSslConfiguration &QSslConfiguration::operator=(const QSslConfiguration &other)

Kopiert die Konfiguration und den Status von other. Wenn other null ist, ist auch dieses Objekt null.

bool QSslConfiguration::operator==(const QSslConfiguration &other) const

Gibt true zurück, wenn dieses QSslConfiguration Objekt gleich other ist.

Zwei QSslConfiguration Objekte werden als gleich angesehen, wenn sie genau die gleichen Einstellungen und den gleichen Status haben.

Siehe auch operator!=().

Dokumentation der Mitgliedsvariablen

const char[] QSslConfiguration::ALPNProtocolHTTP2

Diese Variable enthält den Wert, der für die Aushandlung von HTTP 2 während der Application-Layer Protocol Negotiation verwendet wird.

const char[] QSslConfiguration::NextProtocolHttp1_1

Diese Variable enthält den Wert, der für die Aushandlung von HTTP 1.1 während der Next Protocol Negotiation verwendet wird.

© 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.