QSslConfiguration Class
La classe QSslConfiguration contient la configuration et l'état d'une connexion SSL. En savoir plus...
| En-tête : | #include <QSslConfiguration> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
- Liste de tous les membres, y compris les membres hérités
- QSslConfiguration fait partie de l'API de programmation réseau et des classes partagées implicitement.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Types publics
| enum | NextProtocolNegotiationStatus { NextProtocolNegotiationNone, NextProtocolNegotiationNegotiated, NextProtocolNegotiationUnsupported } |
Fonctions publiques
| 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) |
(since 6.12) void | setKeyingMaterial(const QList<QSslKeyingMaterial> &keyMaterial) |
| 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) |
(since 6.12) QList<QSslKeyingMaterial> | takeKeyingMaterial() |
(since 6.12) std::optional<QSslKeyingMaterial> | takeKeyingMaterial(const QSslKeyingMaterial &material) |
| bool | testSslOption(QSsl::SslOption option) const |
| bool | operator!=(const QSslConfiguration &other) const |
| QSslConfiguration & | operator=(const QSslConfiguration &other) |
| bool | operator==(const QSslConfiguration &other) const |
Membres publics statiques
| 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() |
Description détaillée
QSslConfiguration est utilisée par les classes réseau de Qt Network pour transmettre des informations concernant une connexion SSL ouverte et pour permettre à l’application de contrôler certaines fonctionnalités de cette connexion.
Les paramètres actuellement pris en charge par QSslConfiguration sont les suivants :
- Le protocole SSL/TLS à utiliser
- Le certificat à présenter au pair lors de la connexion et sa clé privée associée
- Les algorithmes de chiffrement autorisés pour le chiffrement de la connexion
- La liste des certificats d'autorités de certification utilisés pour valider le certificat du correspondant
Ces paramètres ne s’appliquent que pendant la phase d’établissement de la connexion. Leur configuration une fois la connexion établie n’a aucun effet.
Les états pris en charge par QSslConfiguration sont les suivants :
- Le certificat présenté par le pair lors de la négociation, ainsi que la chaîne menant à un certificat d’autorité de certification
- Le protocole de chiffrement utilisé pour chiffrer cette session
L'état ne peut être obtenu qu'une fois la connexion SSL lancée, mais pas nécessairement avant qu'elle ne soit terminée. Certains paramètres peuvent changer au cours de la connexion SSL sans qu'il soit nécessaire de la redémarrer (par exemple, le chiffrement peut être modifié au fil du temps).
L'état des objets QSslConfiguration ne peut pas être modifié.
QSslConfiguration peut être utilisé avec l'interface « QSslSocket » et l'API d'accès réseau.
Notez que la modification des paramètres dans QSslConfiguration ne suffit pas à modifier les paramètres de la connexion SSL associée. Pour ce faire, vous devez appeler la méthode setSslConfiguration sur un objet QSslConfiguration modifié. L’exemple suivant illustre comment passer au protocole TLSv1_2 dans un objet QSslSocket:
QSslConfiguration config = sslSocket.sslConfiguration();
config.setProtocol(QSsl::TlsV1_2);
sslSocket.setSslConfiguration(config);Voir également QSsl::SslProtocol, QSslCertificate, QSslCipher, QSslKey, QSslSocket, QNetworkAccessManager, QSslSocket::sslConfiguration() et QSslSocket::setSslConfiguration().
Documentation sur les types de membres
enum QSslConfiguration::NextProtocolNegotiationStatus
Décrit l'état de la négociation du protocole suivant (NPN) ou de la négociation du protocole au niveau de la couche application (ALPN).
| Constante | Valeur | Description |
|---|---|---|
QSslConfiguration::NextProtocolNegotiationNone | 0 | Aucun protocole d’application n’a (encore) été négocié. |
QSslConfiguration::NextProtocolNegotiationNegotiated | 1 | Un protocole suivant a été négocié (voir nextNegotiatedProtocol()). |
QSslConfiguration::NextProtocolNegotiationUnsupported | 2 | Le client et le serveur n’ont pas pu s’accorder sur un protocole d’application commun suivant. |
Documentation des fonctions membres
QSslConfiguration::QSslConfiguration()
Crée une configuration SSL vide. Cette configuration ne contient aucun paramètre valide et son état sera vide. La méthode ` isNull()` renverra `true` après l'appel de ce constructeur.
Dès qu'une méthode de définition est appelée, la méthode ` isNull()` renverra `false`.
QSslConfiguration::QSslConfiguration(const QSslConfiguration &other)
Copie la configuration et l'état de other. Si other est nul, cet objet sera également nul.
[noexcept] QSslConfiguration::~QSslConfiguration()
Libère toutes les ressources occupées par QSslConfiguration.
void QSslConfiguration::addCaCertificate(const QSslCertificate &certificate)
Ajoute certificate à la base de données des certificats d'autorité de certification (CA) de cette configuration. La base de données des certificats CA doit être configurée avant l'établissement de la connexion SSL. La base de données des certificats CA est utilisée par le socket pendant la phase d'établissement de la connexion pour valider le certificat du pair.
Remarque : la configuration par défaut utilise la base de données de certificats d'autorité de certification du système. Si celle-ci n'est pas disponible (ce qui est souvent le cas sous iOS), la base de données par défaut est vide.
Voir également caCertificates(), setCaCertificates() et addCaCertificates().
void QSslConfiguration::addCaCertificates(const QList<QSslCertificate> &certificates)
Ajoute certificates à la base de données des certificats d'autorité de certification (CA) de cette configuration. La base de données des certificats CA doit être configurée avant l'établissement de la connexion SSL. La base de données des certificats CA est utilisée par le socket pendant la phase d'établissement de la connexion pour valider le certificat du pair.
Remarque : la configuration par défaut utilise la base de données de certificats d'autorité de certification du système. Si celle-ci n’est pas disponible (ce qui est souvent le cas sous iOS), la base de données par défaut est vide.
Voir également caCertificates(), setCaCertificates() et addCaCertificate().
bool QSslConfiguration::addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = QSslCertificate::PatternSyntax::FixedString)
Recherche dans tous les fichiers de la liste « path » les certificats encodés au format spécifié dans « format » et les ajoute à la base de données de certificats CA de ce socket. « path » doit être un fichier ou un motif correspondant à un ou plusieurs fichiers, comme spécifié par « syntax ». Renvoie « true » si un ou plusieurs certificats sont ajoutés à la base de données de certificats CA du socket ; sinon, renvoie « false ».
La base de données de certificats CA est utilisée par le socket pendant la phase d’établissement de la connexion pour valider le certificat du pair.
Pour un contrôle plus précis, utilisez addCaCertificate().
Voir également addCaCertificate() et QSslCertificate::fromPath().
QList<QByteArray> QSslConfiguration::allowedNextProtocols() const
Cette fonction renvoie les protocoles autorisés à être négociés avec le serveur via l'extension TLS « Next Protocol Negotiation » (NPN) ou « Application-Layer Protocol Negotiation » (ALPN), tels que définis par setAllowedNextProtocols().
Voir également nextNegotiatedProtocol(), nextProtocolNegotiationStatus(), setAllowedNextProtocols() et QSslConfiguration::NextProtocolHttp1_1.
QMap<QByteArray, QVariant> QSslConfiguration::backendConfiguration() const
Renvoie la configuration spécifique au backend.
Seules les options définies par setBackendConfigurationOption() ou setBackendConfiguration() seront renvoyées. La configuration standard interne du backend n'est pas indiquée.
Voir également setBackendConfigurationOption() et setBackendConfiguration().
QList<QSslCertificate> QSslConfiguration::caCertificates() const
Renvoie la base de données des certificats d’autorité de certification (CA) de cette connexion. La base de données des certificats CA est utilisée par le socket pendant la phase d’établissement de la connexion pour valider le certificat du correspondant. Elle peut être modifiée avant l’établissement de la connexion à l’aide des fonctions ` setCaCertificates()`, ` addCaCertificate()` et ` addCaCertificates()`.
Voir également setCaCertificates(), addCaCertificate() et addCaCertificates().
QList<QSslCipher> QSslConfiguration::ciphers() const
Renvoie la suite de chiffrement cryptographique actuelle de cette connexion. Cette liste est utilisée pendant la phase d'établissement de la connexion pour choisir un algorithme de session. La liste des algorithmes renvoyée est classée par ordre décroissant de préférence (c'est-à-dire que le premier algorithme de la liste est celui qui est le plus privilégié). L'algorithme de session sera le premier de la liste qui est également pris en charge par le pair.
Par défaut, la phase d’établissement de la connexion peut choisir n’importe quel algorithme pris en charge par les bibliothèques SSL de ce système, ce qui peut varier d’un système à l’autre. La liste des algorithmes pris en charge par les bibliothèques SSL de ce système est renvoyée par la fonction ` supportedCiphers()` (). Vous pouvez restreindre la liste des algorithmes utilisés pour choisir l’algorithme de session de cette socket en appelant setCiphers() avec un sous-ensemble des algorithmes pris en charge. Vous pouvez revenir à l’utilisation de l’ensemble complet en appelant setCiphers() avec la liste renvoyée par supportedCiphers().
Voir également setCiphers() et supportedCiphers().
[static] QSslConfiguration QSslConfiguration::defaultConfiguration()
Renvoie la configuration SSL par défaut à utiliser pour les nouvelles connexions SSL.
La configuration SSL par défaut comprend :
- aucun certificat local et aucune clé privée
- protocole SecureProtocols
- la liste par défaut des certificats d'autorité de certification (CA) du système
- la liste des algorithmes de chiffrement correspondant à la liste des algorithmes SSL pris en charge par les bibliothèques SSL, d'une longueur de 128 bits ou plus
Voir également supportedCiphers() et setDefaultConfiguration().
[static] QSslConfiguration QSslConfiguration::defaultDtlsConfiguration()
Renvoie la configuration DTLS par défaut à utiliser pour les nouvelles connexions DTLS.
La configuration DTLS par défaut comprend :
- aucun certificat local et aucune clé privée
- protocole DtlsV1_2OrLater
- la liste des certificats d'autorité de certification (CA) par défaut du système
- la liste des algorithmes de chiffrement correspondant à la liste des algorithmes TLS 1.2 pris en charge par les bibliothèques SSL et utilisant au moins 128 bits secrets par algorithme.
Voir également setDefaultDtlsConfiguration().
QSslDiffieHellmanParameters QSslConfiguration::diffieHellmanParameters() const
Récupère l'ensemble actuel de paramètres Diffie-Hellman.
Si aucun paramètre Diffie-Hellman n'a été défini, l'objet ` QSslConfiguration ` utilise par défaut le groupe MODP de 2048 bits défini dans la RFC 3526.
Remarque : les paramètres par défaut sont susceptibles de changer dans les futures versions de Qt. Veuillez consulter la documentation de la version exacte de Qt que vous utilisez afin de connaître les valeurs par défaut de cette version.
Voir aussi setDiffieHellmanParameters().
bool QSslConfiguration::dtlsCookieVerificationEnabled() const
Cette fonction renvoie « true » si la vérification des cookies DTLS a été activée sur un socket côté serveur.
Voir également setDtlsCookieVerificationEnabled().
QList<QSslEllipticCurve> QSslConfiguration::ellipticCurves() const
Renvoie la liste actuelle des courbes elliptiques de cette connexion. Cette liste est utilisée pendant la phase d'établissement de la connexion pour choisir une courbe elliptique (lorsqu'on utilise un chiffrement à courbe elliptique). La liste des courbes renvoyée est classée par ordre de préférence décroissant (c'est-à-dire que la première courbe de la liste est celle qui est la plus privilégiée).
Par défaut, la phase d'établissement de la connexion peut choisir n'importe laquelle des courbes prises en charge par les bibliothèques SSL de ce système, qui peuvent varier d'un système à l'autre. La liste des courbes prises en charge par les bibliothèques SSL de ce système est renvoyée par la fonction QSslSocket::supportedEllipticCurves().
Vous pouvez restreindre la liste des courbes utilisées pour choisir le chiffrement de session de cette socket en appelant ` setEllipticCurves()` avec un sous-ensemble des courbes prises en charge. Vous pouvez revenir à l’utilisation de l’ensemble complet en appelant ` setEllipticCurves()` avec la liste renvoyée par `QSslSocket::supportedEllipticCurves()`.
Voir également setEllipticCurves.
QSslKey QSslConfiguration::ephemeralServerKey() const
Renvoie la clé éphémère du serveur utilisée pour les algorithmes de chiffrement avec confidentialité persistante, par exemple DHE-RSA-AES128-SHA.
La clé éphémère n'est disponible qu'en mode client, c'est-à-dire QSslSocket::SslClientMode. En mode serveur ou lors de l'utilisation d'un algorithme de chiffrement sans confidentialité persistante, une clé nulle est renvoyée. La clé éphémère du serveur sera définie avant l'émission du signal encrypted().
[since 6.0] bool QSslConfiguration::handshakeMustInterruptOnError() const
Renvoie « true » si une fonction de rappel de vérification déclenche prématurément la fonction ` QSslSocket::handshakeInterruptedOnError()` avant la fin de la négociation de connexion.
Remarque : cette fonction renvoie toujours « false » pour tous les backends, à l'exception d'OpenSSL.
Cette fonction a été introduite dans Qt 6.0.
Voir également ` setHandshakeMustInterruptOnError()`, ` QSslSocket::handshakeInterruptedOnError()` et ` QSslSocket::continueInterruptedHandshake()`.
bool QSslConfiguration::isNull() const
Renvoie ` true ` si l'objet ` QSslConfiguration ` est nul.
Un objet ` QSslConfiguration ` est nul s’il a été instancié par sa construction par défaut et qu’aucune méthode de mise en valeur n’a été appelée.
Voir également setProtocol(), setLocalCertificate(), setPrivateKey(), setCiphers() et setCaCertificates().
QSslCertificate QSslConfiguration::localCertificate() const
Renvoie le certificat à présenter au partenaire lors du processus de négociation SSL.
Voir également setLocalCertificate().
QList<QSslCertificate> QSslConfiguration::localCertificateChain() const
Renvoie la chaîne de certificats à présenter au partenaire lors du processus de négociation SSL.
Voir également setLocalCertificateChain() et localCertificate().
[since 6.0] bool QSslConfiguration::missingCertificateIsFatal() const
Renvoie « true » si les erreurs dont le code est « QSslError::NoPeerCertificate » ne peuvent pas être ignorées.
Remarque : renvoietoujours « false » pour tous les backends TLS, à l'exception d'OpenSSL.
Cette fonction a été introduite dans Qt 6.0.
Voir également ` QSslSocket::ignoreSslErrors()` et ` setMissingCertificateIsFatal()`.
QByteArray QSslConfiguration::nextNegotiatedProtocol() const
Cette fonction renvoie le protocole négocié avec le serveur si l'extension TLS « Next Protocol Negotiation » (NPN) ou « Application-Layer Protocol Negotiation » (ALPN) a été activée. Pour que l'extension NPN/ALPN soit activée, il faut appeler explicitement la fonction ` setAllowedNextProtocols()` avant de se connecter au serveur.
Si aucun protocole n’a pu être négocié ou si l’extension n’était pas activée, cette fonction renvoie un ` QByteArray ` de type null.
Voir également setAllowedNextProtocols() et nextProtocolNegotiationStatus().
QSslConfiguration::NextProtocolNegotiationStatus QSslConfiguration::nextProtocolNegotiationStatus() const
Cette fonction renvoie l'état de la négociation du protocole suivant (NPN) ou de la négociation du protocole de couche application (ALPN). Si cette fonctionnalité n'a pas été activée via ` setAllowedNextProtocols()`, cette fonction renvoie ` NextProtocolNegotiationNone`. L'état sera défini avant l'émission du signal `encrypted()`.
Voir également setAllowedNextProtocols(), allowedNextProtocols(), nextNegotiatedProtocol() et QSslConfiguration::NextProtocolNegotiationStatus.
bool QSslConfiguration::ocspStaplingEnabled() const
Renvoie « true » si l'agrafage OCSP a été activé par la fonction setOCSPStaplingEnabled(), sinon « false » (qui est la valeur par défaut).
Voir également ` setOcspStaplingEnabled()`.
QSslCertificate QSslConfiguration::peerCertificate() const
Renvoie le certificat numérique du pair (c'est-à-dire le certificat direct de l'hôte auquel vous êtes connecté), ou un certificat nul si le pair n'a pas attribué de certificat.
Le certificat du pair est vérifié automatiquement pendant la phase d'établissement de la connexion ; cette fonction est donc généralement utilisée pour récupérer le certificat à des fins d'affichage ou de diagnostic de la connexion. Elle contient des informations sur le pair, notamment son nom d'hôte, l'émetteur du certificat et la clé publique du pair.
Le certificat du pair étant défini lors de la phase d’établissement de la connexion, il est possible d’y accéder en toute sécurité à partir d’un emplacement connecté au signal ` QSslSocket::sslErrors()`, au signal ` QNetworkReply::sslErrors()` ou au signal ` QSslSocket::encrypted()`.
Si un certificat nul est renvoyé, cela peut signifier que la négociation SSL a échoué, que l'hôte auquel vous êtes connecté ne dispose pas de certificat, ou qu'il n'y a pas de connexion.
Si vous souhaitez vérifier la chaîne complète de certificats du pair, utilisez la fonction peerCertificateChain() pour les récupérer tous en une seule fois.
Voir également peerCertificateChain(), QSslSocket::sslErrors(), QSslSocket::ignoreSslErrors(), QNetworkReply::sslErrors() et QNetworkReply::ignoreSslErrors().
QList<QSslCertificate> QSslConfiguration::peerCertificateChain() const
Renvoie la chaîne de certificats numériques du pair, en commençant par le certificat immédiat du pair et en terminant par le certificat de l'autorité de certification.
Les certificats des pairs sont vérifiés automatiquement pendant la phase d’établissement de la connexion. Cette fonction est généralement utilisée pour récupérer des certificats à des fins d’affichage ou pour effectuer des diagnostics de connexion. Les certificats contiennent des informations sur le pair et les émetteurs de certificats, notamment le nom d’hôte, les noms des émetteurs et les clés publiques des émetteurs.
Le certificat du pair étant défini lors de la phase d’établissement de la connexion, il est possible d’accéder en toute sécurité à ce certificat à partir d’un emplacement connecté au signal ` QSslSocket::sslErrors()`, au signal ` QNetworkReply::sslErrors()` ou au signal ` QSslSocket::encrypted()`.
Si une liste vide est renvoyée, cela peut signifier que la négociation SSL a échoué, que l’hôte auquel vous êtes connecté ne dispose pas de certificat, ou qu’il n’y a pas de connexion.
Si vous souhaitez obtenir uniquement le certificat immédiat du pair, utilisez la fonction peerCertificate().
Voir également peerCertificate(), QSslSocket::sslErrors(), QSslSocket::ignoreSslErrors(), QNetworkReply::sslErrors() et QNetworkReply::ignoreSslErrors().
int QSslConfiguration::peerVerifyDepth() const
Renvoie le nombre maximal de certificats de la chaîne de certificats du pair à vérifier pendant la phase de négociation SSL, ou 0 (valeur par défaut) si aucune profondeur maximale n’a été définie, ce qui indique que la chaîne de certificats doit être vérifiée dans son intégralité.
Les certificats sont vérifiés dans l'ordre d'émission, en commençant par le certificat du pair lui-même, puis celui de son émetteur, et ainsi de suite.
Voir également setPeerVerifyDepth() et peerVerifyMode().
QSslSocket::PeerVerifyMode QSslConfiguration::peerVerifyMode() const
Renvoie le mode de vérification. Ce mode détermine si QSslSocket doit demander un certificat au pair (c'est-à-dire si le client demande un certificat au serveur, ou si le serveur demande un certificat au client), et s'il doit exiger que ce certificat soit valide.
Le mode par défaut est `AutoVerifyPeer`, qui indique à ` QSslSocket ` d’utiliser `VerifyPeer` pour les clients et `QueryPeer` pour les serveurs.
Voir également setPeerVerifyMode().
QByteArray QSslConfiguration::preSharedKeyIdentityHint() const
Renvoie l'indicateur d'identité.
Voir aussi setPreSharedKeyIdentityHint().
QSslKey QSslConfiguration::privateKey() const
Renvoie l'SSL key attribuée à cette connexion ou une clé nulle si aucune n'a encore été attribuée.
Voir également ` setPrivateKey()` et ` localCertificate()`.
QSsl::SslProtocol QSslConfiguration::protocol() const
Renvoie le paramètre de protocole associé à cette configuration SSL.
Voir également setProtocol().
QSslCipher QSslConfiguration::sessionCipher() const
Renvoie l'cipher cryptographique du socket, ou un chiffrement nul si la connexion n'est pas chiffrée. Le chiffrement du socket pour la session est défini pendant la phase d'établissement de la connexion. Ce chiffrement est utilisé pour chiffrer et déchiffrer les données transmises via le socket.
L'infrastructure SSL fournit également des fonctions permettant de définir la liste ordonnée de chiffrements parmi lesquels la phase d'établissement de la connexion sélectionnera finalement le chiffrement de session. Cette liste ordonnée doit être en place avant le début de la phase d'établissement de la connexion.
Voir également ciphers(), setCiphers() et supportedCiphers().
QSsl::SslProtocol QSslConfiguration::sessionProtocol() const
Renvoie le protocole SSL/TLS de la socket ou « UnknownProtocol » si la connexion n'est pas chiffrée. Le protocole de la socket pour la session est défini pendant la phase d'établissement de la connexion.
Voir également protocol() et setProtocol().
QByteArray QSslConfiguration::sessionTicket() const
Si l'option « QSsl::SslOptionDisableSessionPersistence » a été désactivée, cette fonction renvoie le ticket de session utilisé lors de la négociation SSL au format ASN.1, ce qui permet notamment de l'enregistrer sur le disque. Si aucun ticket de session n'a été utilisé ou si l'option « QSsl::SslOptionDisableSessionPersistence » n'a pas été désactivée, cette fonction renvoie un objet vide de type ` QByteArray`.
Remarque : lors de l’enregistrement du ticket de session sur disque ou sur un support similaire, veillez à ne pas exposer la session à un attaquant potentiel, car la connaissance de cette session permet d’intercepter les données chiffrées à l’aide des paramètres de session.
Voir également setSessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption() et QSslSocket::newSessionTicketReceived().
int QSslConfiguration::sessionTicketLifeTimeHint() const
Si l'option ` QSsl::SslOptionDisableSessionPersistence ` a été désactivée, cette fonction renvoie l'indication de durée de vie du ticket de session envoyée par le serveur (qui peut être égale à 0). Si le serveur n'a pas envoyé de ticket de session (par exemple, lors de la reprise d'une session ou lorsque le serveur ne prend pas en charge cette fonctionnalité) ou si l'option ` QSsl::SslOptionDisableSessionPersistence ` n'a pas été désactivée, cette fonction renvoie -1.
Voir également sessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption() et QSslSocket::newSessionTicketReceived().
void QSslConfiguration::setAllowedNextProtocols(const QList<QByteArray> &protocols)
Cette fonction définit l'protocols autorisée à être négociée avec le serveur via l'extension TLS « Next Protocol Negotiation » (NPN) ou « Application-Layer Protocol Negotiation » (ALPN) ; chaque élément de protocols doit définir un protocole autorisé. La fonction doit être appelée explicitement avant la connexion afin d’envoyer l’extension NPN/ALPN lors de la poignée de main SSL. Il est possible de vérifier si la négociation a abouti ou non via la fonction nextProtocolNegotiationStatus().
Voir également nextNegotiatedProtocol(), nextProtocolNegotiationStatus(), allowedNextProtocols() et QSslConfiguration::NextProtocolHttp1_1.
void QSslConfiguration::setBackendConfiguration(const QMap<QByteArray, QVariant> &backendConfiguration = QMap<QByteArray, QVariant>())
Définit ou efface la configuration spécifique au backend.
En l'absence du paramètre ` backendConfiguration `, cette fonction efface la configuration spécifique au backend. Pour plus d'informations sur les options prises en charge, consultez la documentation de ` setBackendConfigurationOption()`.
Voir également backendConfiguration() et setBackendConfigurationOption().
void QSslConfiguration::setBackendConfigurationOption(const QByteArray &name, const QVariant &value)
Définit l'option « name » dans la configuration spécifique au backend sur « value ».
Les options prises en charge par le backend OpenSSL (>= 1.0.2) sont disponibles dans la documentation relative aux commandes des fichiers de configuration prises en charge. Le type attendu pour le paramètre « value » est « QByteArray » pour toutes les options. Les exemples montrent comment utiliser certaines de ces options.
Remarque : la configuration spécifique au backend sera appliquée après la configuration générale. L’utilisation de la configuration spécifique au backend pour redéfinir une option de configuration générale écrasera cette dernière.
Voir également backendConfiguration() et setBackendConfiguration().
void QSslConfiguration::setCaCertificates(const QList<QSslCertificate> &certificates)
Définit la base de données des certificats d'autorité de certification (CA) de ce socket sur certificates. La base de données des certificats doit être configurée avant la négociation SSL. La base de données des certificats d'autorité de certification est utilisée par le socket pendant la phase de négociation pour valider le certificat du pair.
Remarque : la configuration par défaut utilise la base de données de certificats d’autorité de certification (CA) du système. Si celle-ci n’est pas disponible (ce qui est souvent le cas sous iOS), la base de données par défaut est vide.
Voir également caCertificates(), addCaCertificates() et addCaCertificate().
void QSslConfiguration::setCiphers(const QList<QSslCipher> &ciphers)
Définit la suite de chiffrement de cette socket sur « ciphers », qui doit contenir un sous-ensemble des algorithmes de chiffrement figurant dans la liste renvoyée par la fonction supportedCiphers().
La restriction de la suite de chiffrement doit être effectuée avant la phase d'établissement de la connexion, au cours de laquelle le chiffrement de session est choisi.
Voir également ciphers() et supportedCiphers().
[since 6.0] void QSslConfiguration::setCiphers(const QString &ciphers)
Définit la suite de chiffrement pour cette configuration sur ciphers, qui est une liste de noms de suites de chiffrement séparés par des deux-points. Les algorithmes de chiffrement sont classés par ordre de préférence, en commençant par le plus privilégié. Chaque nom de suite de chiffrement figurant dans ` ciphers ` doit correspondre à un nom de suite de chiffrement présent dans la liste renvoyée par la fonction ` supportedCiphers()`. La restriction de la suite de chiffrement doit être effectuée avant la phase de négociation, au cours de laquelle la suite de chiffrement de session est choisie.
Remarque : avec le backend Schannel, l’ordre des algorithmes de chiffrement est ignoré et Schannel sélectionne le plus sécurisé lors de la négociation.
Cette fonction a été introduite dans Qt 6.0.
Voir également ciphers().
[static] void QSslConfiguration::setDefaultConfiguration(const QSslConfiguration &configuration)
Définit la configuration SSL par défaut à utiliser pour les nouvelles connexions SSL sur configuration. Les connexions existantes ne sont pas affectées par cet appel.
Voir également supportedCiphers() et defaultConfiguration().
[static] void QSslConfiguration::setDefaultDtlsConfiguration(const QSslConfiguration &configuration)
Définit la configuration DTLS par défaut à utiliser pour les nouvelles connexions DTLS sur configuration. Les connexions existantes ne sont pas affectées par cet appel.
Voir également defaultDtlsConfiguration().
void QSslConfiguration::setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams)
Définit un ensemble personnalisé de paramètres Diffie-Hellman que ce socket utilisera lorsqu'il fonctionnera en tant que serveur pour dhparams.
Si aucun paramètre Diffie-Hellman n’a été défini, l’objet ` QSslConfiguration ` utilise par défaut le groupe MODP à 2048 bits de la RFC 3526.
Depuis la version 6.7, vous pouvez fournir un paramètre Diffie-Hellman vide pour activer la sélection automatique (voir SSL_CTX_set_dh_auto d’OpenSSL) si le backend TLS le prend en charge.
Remarque : les paramètres par défaut sont susceptibles de changer dans les futures versions de Qt. Veuillez consulter la documentation de la version exacte de Qt que vous utilisez afin de connaître les valeurs par défaut de cette version.
Voir également diffieHellmanParameters().
void QSslConfiguration::setDtlsCookieVerificationEnabled(bool enable)
Cette fonction active la vérification des cookies DTLS lorsque la valeur de enable est « true ».
Voir également dtlsCookieVerificationEnabled().
void QSslConfiguration::setEllipticCurves(const QList<QSslEllipticCurve> &curves)
Définit la liste des courbes elliptiques à utiliser par ce socket sur curves, qui doit contenir un sous-ensemble des courbes figurant dans la liste renvoyée par supportedEllipticCurves().
La restriction des courbes elliptiques doit être effectuée avant la phase de négociation, au cours de laquelle le chiffrement de session est choisi.
Voir également ellipticCurves.
[since 6.0] void QSslConfiguration::setHandshakeMustInterruptOnError(bool interrupt)
Si la valeur de ` interrupt ` est `true` et que le backend sous-jacent prend en charge cette option, les erreurs détectées lors de la vérification du certificat sont immédiatement signalées par l’appel de la fonction ` QSslSocket::handshakeInterruptedOnError()`. Cela permet d’interrompre la négociation de connexion inachevée et d’envoyer un message d’alerte approprié au pair. Aucune action particulière n’est requise de la part de l’application dans ce cas. La fonction ` QSslSocket ` fermera la connexion après l’envoi du message d’alerte. Si, après avoir examiné l’erreur, l’application souhaite poursuivre la négociation, elle doit appeler la fonction ` QSslSocket::continueInterruptedHandshake()` depuis sa fonction de slot. La connexion signal-slot doit être directe.
Remarque : lorsque l'interruption de la négociation est activée, les erreurs qui seraient normalement signalées par ` QSslSocket::peerVerifyError()` ne sont alors signalées que par ` QSslSocket::handshakeInterruptedOnError()`.
Remarque : même si la négociation a été poursuivie, ces erreurs seront signalées lors de l’émission du signal ` QSslSocket::sslErrors()` (et doivent donc être ignorées dans le slot de fonction correspondant).
Cette fonction a été introduite dans Qt 6.0.
Voir également handshakeMustInterruptOnError(), QSslSocket::handshakeInterruptedOnError() et QSslSocket::continueInterruptedHandshake().
[since 6.12] void QSslConfiguration::setKeyingMaterial(const QList<QSslKeyingMaterial> &keyMaterial)
Définit la configuration du matériel de chiffrement pour cette connexion SSL sur « keyMaterial ».
Cela active le mécanisme d’exportation TLS, permettant à l’application de dériver du matériel cryptographique supplémentaire à partir de la session TLS négociée. L’exportateur est défini dans les RFC 5705 et RFC 8446.
La configuration doit être définie avant le début de la négociation TLS. L'appel de cette fonction sur une connexion déjà chiffrée n'a aucun effet.
Chaque entrée « QSslKeyingMaterial » spécifie le libellé de l’exportateur, une valeur de contexte facultative et la longueur des éléments de chiffrement à dériver. Une fois la négociation établie, les éléments de chiffrement demandés peuvent être récupérés à partir de la connexion SSL.
Le matériel de chiffrement exporté est unique à la session TLS et peut être utilisé en toute sécurité pour dériver des clés destinées aux protocoles de niveau application qui nécessitent une liaison cryptographique avec le canal TLS sous-jacent.
Remarque : cette fonctionnalité est spécifique au backend et nécessite actuellement la prise en charge d’OpenSSL.
Avertissement : il incombeaux applications de définir des étiquettes d’exportateur uniques et résistantes aux collisions. La réutilisation d’étiquettes ou de contextes à des fins différentes peut entraîner des failles de sécurité subtiles.
Cette fonction a été introduite dans Qt 6.12.
Voir également ` takeKeyingMaterial()`.
void QSslConfiguration::setLocalCertificate(const QSslCertificate &certificate)
Définit le certificat à présenter au partenaire lors de la négociation SSL comme étant certificate.
La configuration du certificat une fois la connexion établie n'a aucun effet.
Un certificat est le moyen d’identification utilisé dans le processus SSL. Le certificat local est utilisé par la partie distante pour vérifier l’identité de l’utilisateur local par rapport à sa liste d’autorités de certification. Dans la plupart des cas, comme lors de la navigation Web via HTTP, seuls les serveurs s’identifient auprès des clients ; le client n’envoie donc pas de certificat.
Voir également localCertificate().
void QSslConfiguration::setLocalCertificateChain(const QList<QSslCertificate> &localChain)
Définit la chaîne de certificats à présenter au partenaire lors de la négociation SSL comme suit : localChain.
La configuration de la chaîne de certificats une fois la connexion établie n'a aucun effet.
Un certificat est le moyen d'identification utilisé dans le processus SSL. Le certificat local est utilisé par la partie distante pour vérifier l'identité de l'utilisateur local par rapport à sa liste d'autorités de certification. Dans la plupart des cas, comme lors de la navigation Web via HTTP, seuls les serveurs s'identifient auprès des clients ; le client n'envoie donc pas de certificat.
Contrairement à la méthode QSslConfiguration::setLocalCertificate(), cette méthode vous permet de spécifier tous les certificats intermédiaires nécessaires à la validation de votre certificat. Le premier élément de la liste doit être le certificat de fin de chaîne.
Voir également localCertificateChain().
[since 6.0] void QSslConfiguration::setMissingCertificateIsFatal(bool cannotRecover)
Si la variable ` cannotRecover ` est définie à `true` et que le mode de vérification utilisé est ` QSslSocket::VerifyPeer ` ou ` QSslSocket::AutoVerifyPeer ` (pour un socket côté client), l'absence de certificat du pair sera considérée comme une erreur irrémédiable qui ne peut être ignorée. Un message d'alerte approprié sera envoyé au pair avant la fermeture de la connexion.
Remarque : disponibleuniquement si Qt a été configuré et compilé avec le backend OpenSSL.
Cette fonction a été introduite dans Qt 6.0.
Voir également QSslSocket::ignoreSslErrors(), QSslSocket::PeerVerifyMode et missingCertificateIsFatal().
void QSslConfiguration::setOcspStaplingEnabled(bool enabled)
Si la valeur « enabled » est définie sur « true », le client QSslSocket enverra une requête d'état de certificat à son homologue lors du lancement de la négociation de connexion. Au cours de cette négociation, QSslSocket vérifiera la réponse du serveur. Cette valeur doit être définie avant le début de la négociation de connexion.
Voir également ocspStaplingEnabled().
void QSslConfiguration::setPeerVerifyDepth(int depth)
Définit le nombre maximal de certificats de la chaîne de certificats du pair à vérifier pendant la phase de négociation SSL, à depth. Une valeur de 0 signifie qu'aucune profondeur maximale n'est définie, ce qui indique que la chaîne de certificats doit être vérifiée dans son intégralité.
Les certificats sont vérifiés dans l'ordre d'émission, en commençant par le certificat du pair lui-même, puis celui de son émetteur, et ainsi de suite.
Voir également peerVerifyDepth() et setPeerVerifyMode().
void QSslConfiguration::setPeerVerifyMode(QSslSocket::PeerVerifyMode mode)
Définit le mode de vérification sur « mode ». Ce mode détermine si « QSslSocket » doit demander un certificat au pair (c'est-à-dire si le client demande un certificat au serveur, ou si le serveur demande un certificat au client), et s'il doit exiger que ce certificat soit valide.
Le mode par défaut est `AutoVerifyPeer`, qui indique à ` QSslSocket ` d’utiliser `VerifyPeer` pour les clients et `QueryPeer` pour les serveurs.
Voir également peerVerifyMode().
void QSslConfiguration::setPreSharedKeyIdentityHint(const QByteArray &hint)
Définit l'indicateur d'identité pour une authentification par clé pré-partagée sur hint. Cela affectera la prochaine poignée de main initiée ; l'appel de cette fonction sur une socket déjà chiffrée n'aura aucun effet sur l'indicateur d'identité de la socket.
L'indicateur d'identité est utilisé uniquement dans ` QSslSocket::SslServerMode ` !
Voir également preSharedKeyIdentityHint().
void QSslConfiguration::setPrivateKey(const QSslKey &key)
Définit l'key privée de la connexion sur key. La clé privée et l'certificate locale sont utilisées par les clients et les serveurs qui doivent prouver leur identité à leurs pairs SSL.
La clé et le certificat local sont tous deux requis si vous créez un socket serveur SSL. Si vous créez un socket client SSL, la clé et le certificat local sont requis si votre client doit s’identifier auprès d’un serveur SSL.
Voir également privateKey() et setLocalCertificate().
void QSslConfiguration::setProtocol(QSsl::SslProtocol protocol)
Définit le paramètre de protocole de cette configuration sur « protocol ».
La définition du protocole une fois la connexion établie n'a aucun effet.
Voir également protocol().
void QSslConfiguration::setSessionTicket(const QByteArray &sessionTicket)
Définit le ticket de session à utiliser lors d'une poignée de main SSL. L'option « QSsl::SslOptionDisableSessionPersistence » doit être désactivée pour que cela fonctionne, et « sessionTicket » doit être au format ASN.1, tel qu'il est renvoyé par la fonction sessionTicket().
Voir également sessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption() et QSslSocket::newSessionTicketReceived().
void QSslConfiguration::setSslOption(QSsl::SslOption option, bool on)
Active ou désactive la fonctionnalité « SSL compatibility » option. Si on est défini sur « true », la fonctionnalité « option » est activée. Si on est défini sur « false », la fonctionnalité « option » est désactivée.
Voir également testSslOption().
[static] QList<QSslCipher> QSslConfiguration::supportedCiphers()
Renvoie la liste des algorithmes de chiffrement pris en charge par ce système. Cette liste est définie par les bibliothèques SSL du système et peut varier d'un système à l'autre.
Voir également ciphers() et setCiphers().
[static] QList<QSslEllipticCurve> QSslConfiguration::supportedEllipticCurves()
Renvoie la liste des courbes elliptiques prises en charge par ce système. Cette liste est définie par les bibliothèques SSL du système et peut varier d'un système à l'autre.
Voir également ellipticCurves() et setEllipticCurves().
[noexcept] void QSslConfiguration::swap(QSslConfiguration &other)
Remplace cette instance de configuration SSL par celle de other. Cette opération est très rapide et ne rencontre jamais d'échec.
[static] QList<QSslCertificate> QSslConfiguration::systemCaCertificates()
Cette fonction fournit la base de données des certificats d'autorité de certification (CA) fournie par le système d'exploitation. La base de données des certificats CA renvoyée par cette fonction sert à initialiser la base de données renvoyée par la fonction caCertificates() sur l'QSslConfiguration par défaut.
Voir également caCertificates(), setCaCertificates(), defaultConfiguration(), addCaCertificate() et addCaCertificates().
[since 6.12] QList<QSslKeyingMaterial> QSslConfiguration::takeKeyingMaterial()
Renvoie la configuration du matériel de chiffrement pour cette connexion SSL.
Le matériel de chiffrement permet à une application de dériver du matériel cryptographique supplémentaire à partir d’une session TLS établie, à l’aide du mécanisme d’exportation TLS tel que défini dans les RFC 5705 et RFC 8446.
Chaque entrée de la liste renvoyée décrit une requête de matériel de chiffrement exporté, comprenant le libellé de l’exportateur, un contexte facultatif et la longueur souhaitée des données exportées. Le matériel de chiffrement proprement dit n’est disponible qu’après une négociation réussie.
Le matériel de chiffrement exporté est lié à la session TLS spécifique et est cryptographiquement indépendant des clés de session utilisées pour le chiffrement. Il peut être utilisé à des fins spécifiques à l’application, telles que la liaison de canaux ou la dérivation de clés pour les protocoles s’appuyant sur TLS.
Si aucune configuration de matériel de chiffrement n’a été définie, cette fonction renvoie une liste vide.
Les valeurs sont transmises plutôt que partagées : les entrées conservées dans cette configuration sont sans valeur clones; elles peuvent donc toujours être utilisées pour demander à nouveau le même matériel de chiffrement. Seules les entrées renvoyées contiennent les valeurs dérivées.
Remarque : la disponibilité du matériel de chiffrement dépend du backend TLS. Actuellement, cette fonctionnalité n’est prise en charge que lors de l’utilisation d’OpenSSL.
Avertissement : le matériel de chiffrementexporté doit être manipulé avec précaution. Une utilisation inappropriée peut compromettre la sécurité de la session TLS ou des protocoles de niveau supérieur.
Cette fonction a été introduite dans Qt 6.12.
Voir également ` setKeyingMaterial()`.
[since 6.12] std::optional<QSslKeyingMaterial> QSslConfiguration::takeKeyingMaterial(const QSslKeyingMaterial &material)
Renvoie le matériel de chiffrement dérivé correspondant à la requête d'material.
Renvoie l’entrée de la liste des clés correspondant à material par étiquette, contexte et taille demandée, ou std::nullopt si aucune entrée correspondante n’a été trouvée.
Si une entrée correspondante est trouvée et que la négociation TLS s’est achevée avec succès, la méthode QSslKeyingMaterial::value() de l’objet renvoyé contient le matériel de chiffrement dérivé.
La valeur ne peut être récupérée qu’une seule fois : l’entrée restante est un objet ` clone` sans valeur, qui correspond toujours à ` material`.
Cette fonction a été introduite dans Qt 6.12.
Voir également takeKeyingMaterial() et setKeyingMaterial().
bool QSslConfiguration::testSslOption(QSsl::SslOption option) const
Renvoie « true » si la compatibilité SSL spécifiée option est activée.
Voir également setSslOption().
bool QSslConfiguration::operator!=(const QSslConfiguration &other) const
Renvoie « true » si cet objet « QSslConfiguration » diffère de « other ». Deux objets « QSslConfiguration » sont considérés comme différents si un seul état ou paramètre diffère.
Voir également operator==().
QSslConfiguration &QSslConfiguration::operator=(const QSslConfiguration &other)
Copie la configuration et l'état de ` other`. Si ` other ` est nul, cet objet sera également nul.
bool QSslConfiguration::operator==(const QSslConfiguration &other) const
Renvoie ` true ` si cet objet ` QSslConfiguration ` est égal à ` other`.
Deux objets ` QSslConfiguration ` sont considérés comme égaux s’ils ont exactement les mêmes paramètres et le même état.
Voir également operator!=().
Documentation sur les variables membres
const char[] QSslConfiguration::ALPNProtocolHTTP2
Cette variable contient la valeur utilisée pour la négociation du protocole HTTP/2 lors de la négociation du protocole au niveau de la couche application.
const char[] QSslConfiguration::NextProtocolHttp1_1
Cette variable contient la valeur utilisée pour la négociation du protocole HTTP 1.1 lors de la négociation du protocole suivant.
© 2026 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.