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 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QSslConfiguration ist Teil von Network Programming API und Implicitly Shared Classes.
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).
Konstante | Wert | Beschreibung |
---|---|---|
QSslConfiguration::NextProtocolNegotiationNone | 0 | Es wurde (noch) kein Anwendungsprotokoll ausgehandelt. |
QSslConfiguration::NextProtocolNegotiationNegotiated | 1 | Es wurde ein nächstes Protokoll ausgehandelt (siehe nextNegotiatedProtocol()). |
QSslConfiguration::NextProtocolNegotiationUnsupported | 2 | Der 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.