Sur cette page

QSslConfiguration Class

La classe QSslConfiguration contient la configuration et l'état d'une connexion SSL. Plus d'informations...

En-tête : #include <QSslConfiguration>
CMake : find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake : QT += network

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)
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

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é par les classes de réseau Qt pour relayer des informations sur une connexion SSL ouverte et pour permettre à l'application de contrôler certaines caractéristiques de cette connexion.

Les paramètres actuellement pris en charge par QSslConfiguration sont les suivants :

  • le protocole SSL/TLS à utiliser
  • le certificat à présenter à l'homologue lors de la connexion et la clé privée associée
  • les algorithmes de chiffrement autorisés pour le cryptage de la connexion
  • la liste des certificats des autorités de certification utilisés pour valider le certificat de l'homologue.

Ces paramètres ne sont appliqués que lors de l'établissement de la connexion. Les définir après l'établissement de la connexion n'a aucun effet.

Les états pris en charge par QSslConfiguration sont les suivants :

  • Le certificat présenté par l'homologue lors de l'établissement de la connexion, ainsi que la chaîne menant à un certificat de l'autorité de certification.
  • Le cryptogramme utilisé pour chiffrer cette session

L'état ne peut être obtenu qu'une fois la connexion SSL démarrée, mais pas nécessairement avant. Certains paramètres peuvent être modifiés 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 QSslSocket et l'API d'accès au réseau.

Notez qu'il ne suffit pas de modifier les paramètres de QSslConfiguration pour modifier les paramètres de la connexion SSL correspondante. Vous devez appeler setSslConfiguration sur un objet QSslConfiguration modifié pour y parvenir. L'exemple suivant montre comment changer le protocole en TLSv1_2 dans un objet QSslSocket:

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

Voir aussi 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 de la couche application (ALPN).

ConstanteValeurDescription de l'état
QSslConfiguration::NextProtocolNegotiationNone0Aucun protocole d'application n'a (encore) été négocié.
QSslConfiguration::NextProtocolNegotiationNegotiated1Un protocole suivant a été négocié (voir nextNegotiatedProtocol()).
QSslConfiguration::NextProtocolNegotiationUnsupported2Le client et le serveur n'ont pas pu se mettre d'accord sur un prochain protocole d'application commun.

Fonction membre Documentation

QSslConfiguration::QSslConfiguration()

Construit une configuration SSL vide. Cette configuration ne contient aucun paramètre valide et l'état sera vide. isNull() renverra true après l'appel de ce constructeur.

Une fois les méthodes setter appelées, 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 les ressources détenues par QSslConfiguration.

void QSslConfiguration::addCaCertificate(const QSslCertificate &certificate)

Ajoute certificate à la base de données des certificats CA de cette configuration. La base de données des certificats doit être configurée avant l'établissement de la liaison SSL. La base de données des certificats d'autorité de certification est utilisée par la socket pendant la phase d'échange pour valider le certificat de l'homologue.

Remarque : la configuration par défaut utilise la base de données des certificats de l'autorité de certification du système. Si celle-ci n'est pas disponible (comme c'est souvent le cas sur iOS), la base de données par défaut est vide.

Voir aussi caCertificates(), setCaCertificates(), et addCaCertificates().

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

Ajoute certificates à la base de données des certificats CA de cette configuration. La base de données des certificats doit être configurée avant l'établissement de la liaison SSL. La base de données des certificats d'autorité de certification est utilisée par la socket pendant la phase d'échange pour valider le certificat de l'homologue.

Remarque : la configuration par défaut utilise la base de données des certificats de l'autorité de certification du système. Si celle-ci n'est pas disponible (comme c'est souvent le cas sur iOS), la base de données par défaut est vide.

Voir aussi 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 path les certificats encodés dans le format spécifié format et les ajoute à la base de données des certificats CA de cette 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 des certificats de l'autorité de certification de la socket ; sinon, renvoie false.

La base de données des certificats d'autorité de certification est utilisée par la socket au cours de la phase d'échange pour valider le certificat de l'homologue.

Pour un contrôle plus précis, utilisez addCaCertificate().

Voir aussi 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), comme défini par setAllowedNextProtocols().

Voir aussi 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 renvoyée.

Voir aussi setBackendConfigurationOption() et setBackendConfiguration().

QList<QSslCertificate> QSslConfiguration::caCertificates() const

Renvoie la base de données des certificats CA de cette connexion. La base de données des certificats de l'autorité de certification est utilisée par la socket pendant la phase d'échange pour valider le certificat de l'homologue. Elle peut être modifiée avant la poignée de main avec setCaCertificates(), ou avec addCaCertificate() et addCaCertificates().

Voir aussi setCaCertificates(), addCaCertificate() et addCaCertificates().

QList<QSslCipher> QSslConfiguration::ciphers() const

Renvoie la suite de chiffrement cryptographique actuelle de cette connexion. Cette liste est utilisée lors de la phase d'échange pour choisir un algorithme de chiffrement de session. La liste de chiffrement renvoyée est classée par ordre décroissant de préférence (c'est-à-dire que le premier chiffrement de la liste est le plus préféré). (c'est-à-dire que le premier chiffre de la liste est le chiffre préféré). Le chiffrement de session sera le premier de la liste qui est également pris en charge par l'homologue.

Par défaut, la phase de poignée de main peut choisir n'importe lequel des algorithmes de chiffrement pris en charge par les bibliothèques SSL de ce système, qui peuvent varier d'un système à l'autre. La liste des algorithmes de chiffrement pris en charge par les bibliothèques SSL de ce système est renvoyée par supportedCiphers(). Vous pouvez restreindre la liste des chiffrements utilisés pour choisir le chiffrement de session pour cette socket en appelant setCiphers() avec un sous-ensemble des chiffrements supportés. Vous pouvez revenir à l'utilisation de l'ensemble complet en appelant setCiphers() avec la liste retournée par supportedCiphers().

Voir aussi setCiphers() et supportedCiphers().

[static] QSslConfiguration QSslConfiguration::defaultConfiguration()

Renvoie la configuration SSL par défaut à utiliser dans les nouvelles connexions SSL.

La configuration SSL par défaut consiste en

  • pas de certificat local ni de clé privée
  • protocole SecureProtocols
  • la liste des certificats de l'autorité de certification par défaut du système
  • la liste des algorithmes de chiffrement égale à la liste des algorithmes de chiffrement SSL pris en charge par les bibliothèques SSL qui sont de 128 bits ou plus.

Voir aussi supportedCiphers() et setDefaultConfiguration().

[static] QSslConfiguration QSslConfiguration::defaultDtlsConfiguration()

Renvoie la configuration DTLS par défaut à utiliser dans les nouvelles connexions DTLS.

La configuration DTLS par défaut consiste en

  • pas de certificat local ni de clé privée
  • protocole DtlsV1_2OrLater
  • la liste des certificats de l'autorité de certification par défaut du système
  • la liste des algorithmes de chiffrement égale à la liste des algorithmes de chiffrement TLS 1.2 pris en charge par les bibliothèques SSL qui utilisent 128 bits secrets ou plus pour le chiffrement.

Voir aussi setDefaultDtlsConfiguration().

QSslDiffieHellmanParameters QSslConfiguration::diffieHellmanParameters() const

Récupère l'ensemble actuel des 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 2048 bits de la RFC 3526.

Remarque : les paramètres par défaut peuvent 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 paramètres par défaut utilisés par cette version.

Voir aussi setDiffieHellmanParameters().

bool QSslConfiguration::dtlsCookieVerificationEnabled() const

Cette fonction retourne vrai si la vérification des cookies DTLS a été activée sur une socket côté serveur.

Voir aussi setDtlsCookieVerificationEnabled().

QList<QSslEllipticCurve> QSslConfiguration::ellipticCurves() const

Renvoie la liste actuelle des courbes elliptiques de cette connexion. Cette liste est utilisée lors de la phase d'échange pour choisir une courbe elliptique (lors de l'utilisation d'un algorithme de chiffrement à courbe elliptique). La liste des courbes renvoyée est ordonnée par préférence décroissante (c'est-à-dire que la première courbe de la liste est la plus préférée).

Par défaut, la phase de poignée de main 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 QSslSocket::supportedEllipticCurves().

Vous pouvez restreindre la liste des courbes utilisées pour choisir le chiffrement de session pour cette socket en appelant setEllipticCurves() avec un sous-ensemble des chiffrements pris en charge. Vous pouvez revenir à l'utilisation de l'ensemble des courbes en appelant setEllipticCurves() avec la liste retournée par QSslSocket::supportedEllipticCurves().

Voir aussi setEllipticCurves.

QSslKey QSslConfiguration::ephemeralServerKey() const

Renvoie la clé éphémère du serveur utilisée pour les algorithmes de chiffrement avec secret de transmission, par exemple DHE-RSA-AES128-SHA.

La clé éphémère n'est disponible qu'en mode client, c'est-à-dire à l'adresse QSslSocket::SslClientMode. En mode serveur ou en cas d'utilisation d'un algorithme de chiffrement sans secret de transmission, une clé nulle est renvoyée. La clé éphémère du serveur sera définie avant d'émettre le signal encrypted().

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

Retourne true si un callback de vérification émet QSslSocket::handshakeInterruptedOnError() avant la fin de la poignée de main.

Note : Cette fonction renvoie toujours false pour tous les backends sauf OpenSSL.

Cette fonction a été introduite dans Qt 6.0.

Voir aussi setHandshakeMustInterruptOnError(), QSslSocket::handshakeInterruptedOnError(), et QSslSocket::continueInterruptedHandshake().

bool QSslConfiguration::isNull() const

Renvoie true s'il s'agit d'un objet QSslConfiguration nul.

Un objet QSslConfiguration est nul s'il a été construit par défaut et qu'aucune méthode setter n'a été appelée.

Voir aussi setProtocol(), setLocalCertificate(), setPrivateKey(), setCiphers() et setCaCertificates().

QSslCertificate QSslConfiguration::localCertificate() const

Renvoie le certificat à présenter à l'homologue au cours du processus d'établissement de la liaison SSL.

Voir aussi setLocalCertificate().

QList<QSslCertificate> QSslConfiguration::localCertificateChain() const

Renvoie la chaîne de certificats à présenter à l'homologue au cours du processus d'échange SSL.

Voir aussi setLocalCertificateChain() et localCertificate().

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

Retourne true si les erreurs avec le code QSslError::NoPeerCertificate ne peuvent pas être ignorées.

Note : renvoie toujours false pour tous les backends TLS sauf OpenSSL.

Cette fonction a été introduite dans Qt 6.0.

Voir aussi 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, setAllowedNextProtocols() doit être appelé explicitement avant la connexion au serveur.

Si aucun protocole n'a pu être négocié ou si l'extension n'a pas été activée, cette fonction renvoie une adresse QByteArray qui est nulle.

Voir aussi 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 la couche application (ALPN). Si la fonction n'a pas été activée par setAllowedNextProtocols(), cette fonction renvoie NextProtocolNegotiationNone. Le statut sera défini avant d'émettre le signal encrypted().

Voir également setAllowedNextProtocols(), allowedNextProtocols(), nextNegotiatedProtocol() et QSslConfiguration::NextProtocolNegotiationStatus.

bool QSslConfiguration::ocspStaplingEnabled() const

Retourne true si l'agrafage OCSP a été activé par setOCSPStaplingEnabled(), sinon false (qui est la valeur par défaut).

Voir aussi setOcspStaplingEnabled().

QSslCertificate QSslConfiguration::peerCertificate() const

Renvoie le certificat numérique de l'homologue (c'est-à-dire le certificat immédiat de l'hôte auquel vous êtes connecté) ou un certificat nul si l'homologue n'a pas attribué de certificat.

Le certificat de l'homologue est vérifié automatiquement au cours de la phase d'échange, de sorte que cette fonction est normalement utilisée pour récupérer le certificat à des fins d'affichage ou de diagnostic de la connexion. Il contient des informations sur l'homologue, notamment son nom d'hôte, l'émetteur du certificat et la clé publique de l'homologue.

Étant donné que le certificat de l'homologue est défini au cours de la phase d'échange, il n'y a aucun risque à accéder au certificat de l'homologue à partir d'un slot 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 poignée de main SSL a échoué, que l'hôte auquel vous êtes connecté n'a pas de certificat ou qu'il n'y a pas de connexion.

Si vous souhaitez vérifier la chaîne complète des certificats de l'homologue, utilisez peerCertificateChain() pour les obtenir tous en même temps.

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 de l'homologue, en commençant par le certificat immédiat de l'homologue et en terminant par le certificat de l'autorité de certification.

Les certificats de l'homologue sont vérifiés automatiquement pendant la phase d'échange. Cette fonction est normalement 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 l'homologue et les émetteurs de certificats, notamment le nom de l'hôte, les noms des émetteurs et les clés publiques des émetteurs.

Étant donné que le certificat de l'homologue est défini au cours de la phase d'échange, il est possible d'accéder au certificat de l'homologue à partir d'une fente connectée 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 poignée de main SSL a échoué, que l'hôte auquel vous êtes connecté n'a pas de certificat ou qu'il n'y a pas de connexion.

Si vous souhaitez obtenir uniquement le certificat immédiat de l'homologue, utilisez 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 de l'homologue à vérifier lors de la phase d'échange SSL, ou 0 (par défaut) si aucune profondeur maximale n'a été définie, ce qui indique que l'ensemble de la chaîne de certificats doit être vérifié.

Les certificats sont vérifiés dans l'ordre d'émission, en commençant par le certificat de l'homologue, puis le certificat 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 à l'homologue (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 aussi setPeerVerifyMode().

QByteArray QSslConfiguration::preSharedKeyIdentityHint() const

Renvoie l'indice d'identité.

Voir aussi setPreSharedKeyIdentityHint().

QSslKey QSslConfiguration::privateKey() const

Renvoie l'adresse SSL key attribuée à cette connexion ou une clé nulle si aucune n'a encore été attribuée.

Voir aussi setPrivateKey() et localCertificate().

QSsl::SslProtocol QSslConfiguration::protocol() const

Renvoie le paramètre de protocole pour cette configuration SSL.

Voir aussi setProtocol().

QSslCipher QSslConfiguration::sessionCipher() const

Renvoie le code cryptographique de la socket cipher, ou un code cryptographique nul si la connexion n'est pas cryptée. Le chiffrement de la socket pour la session est défini lors de la phase d'échange de données. Le chiffrement est utilisé pour chiffrer et déchiffrer les données transmises par la socket.

L'infrastructure SSL fournit également des fonctions permettant d'établir la liste ordonnée des algorithmes de chiffrement à partir de laquelle la phase de poignée de main sélectionnera finalement l'algorithme de chiffrement de la session. Cette liste ordonnée doit être en place avant le début de la phase d'échange.

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 cryptée. Le protocole de la socket pour la session est défini lors de la phase d'échange.

Voir aussi protocol() et setProtocol().

QByteArray QSslConfiguration::sessionTicket() const

Si QSsl::SslOptionDisableSessionPersistence a été désactivé, cette fonction renvoie le ticket de session utilisé dans la poignée de main SSL au format ASN.1, qui peut par exemple être conservé sur le disque. Si aucun ticket de session n'a été utilisé ou si QSsl::SslOptionDisableSessionPersistence n'a pas été désactivé, cette fonction renvoie un QByteArray vide.

Remarque : lors de la persistance du ticket de session sur le disque ou sur un support similaire, veillez à ne pas exposer la session à un attaquant potentiel, car la connaissance de la session permet d'écouter les données cryptées avec les paramètres de la session.

Voir également setSessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption() et QSslSocket::newSessionTicketReceived().

int QSslConfiguration::sessionTicketLifeTimeHint() const

Si QSsl::SslOptionDisableSessionPersistence a été désactivé, cette fonction renvoie l'indice de durée de vie du ticket de session envoyé par le serveur (qui peut être 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 le prend pas en charge) ou si QSsl::SslOptionDisableSessionPersistence n'a pas été désactivé, cette fonction renvoie -1.

Voir aussi sessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption(), et QSslSocket::newSessionTicketReceived().

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

Cette fonction définit les adresses protocols autorisées à être négociées avec le serveur par l'intermédiaire de 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 pour envoyer l'extension NPN/ALPN dans la poignée de main SSL. La réussite ou l'échec de la négociation peut être demandé par l'intermédiaire de 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.

Sans le paramètre backendConfiguration, cette fonction efface la configuration spécifique au backend. De plus amples informations sur les options prises en charge sont disponibles dans 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 à value.

Les options prises en charge par le backend OpenSSL (>= 1.0.2) sont disponibles dans la documentation sur les commandes des fichiers de configuration pris en charge. Le type attendu pour le paramètre value est un QByteArray pour toutes les options. Les exemples montrent comment utiliser certaines 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 définir à nouveau une option de la configuration générale écrasera l'option de la configuration générale.

Voir aussi backendConfiguration() et setBackendConfiguration().

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

Définit la base de données des certificats de l'autorité de certification de cette socket à certificates. La base de données de certificats doit être définie avant le handshake SSL. La base de données des certificats CA est utilisée par la socket pendant la phase de poignée de main pour valider le certificat de l'homologue.

Remarque : la configuration par défaut utilise la base de données des certificats de l'autorité de certification du système. Si celle-ci n'est pas disponible (comme c'est souvent le cas sur iOS), la base de données par défaut est vide.

Voir aussi caCertificates(), addCaCertificates(), et addCaCertificate().

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

Définit la suite de chiffrement cryptographique pour cette socket à ciphers, qui doit contenir un sous-ensemble de chiffrement dans la liste retournée par supportedCiphers().

La restriction de la suite de chiffrement doit être effectuée avant la phase de poignée de main, au cours de laquelle le chiffrement de session est choisi.

Voir aussi ciphers() et supportedCiphers().

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

Définit la suite de chiffrement cryptographique pour cette configuration à ciphers, qui est une liste de noms de suites de chiffrement séparés par deux points. Les chiffres sont énumérés par ordre de préférence, en commençant par le chiffre le plus préféré. Chaque nom de chiffrement dans ciphers doit être le nom d'un chiffrement dans la liste renvoyée par supportedCiphers(). La restriction de la suite de chiffrement doit être effectuée avant la phase de poignée de main, au cours de laquelle le chiffrement de la session est choisi.

Note : Avec le backend Schannel, l'ordre des algorithmes de chiffrement est ignoré et Schannel choisit l'algorithme le plus sûr lors de la poignée de main.

Cette fonction a été introduite dans Qt 6.0.

Voir aussi ciphers().

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

Définit la configuration SSL par défaut à utiliser dans les nouvelles connexions SSL à 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 dans les nouvelles connexions DTLS à configuration. Les connexions existantes ne sont pas affectées par cet appel.

Voir aussi defaultDtlsConfiguration().

void QSslConfiguration::setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams)

Définit un ensemble personnalisé de paramètres Diffie-Hellman à utiliser par cette socket lorsqu'elle fonctionne 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 utiliser la sélection automatique (voir SSL_CTX_set_dh_auto d'openssl) si le backend tls le supporte.

Note : Les paramètres par défaut peuvent 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 paramètres par défaut utilisés par cette version.

Voir aussi diffieHellmanParameters().

void QSslConfiguration::setDtlsCookieVerificationEnabled(bool enable)

Cette fonction active la vérification des cookies DTLS lorsque enable est vrai.

Voir aussi dtlsCookieVerificationEnabled().

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

Définit la liste des courbes elliptiques à utiliser par cette socket à curves, qui doit contenir un sous-ensemble des courbes de la liste renvoyée par supportedEllipticCurves().

La restriction des courbes elliptiques doit être effectuée avant la phase de poignée de main, au cours de laquelle le chiffrement de session est choisi.

Voir aussi ellipticCurves.

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

Si interrupt est vrai et que le backend sous-jacent supporte cette option, les erreurs trouvées lors de la vérification du certificat sont immédiatement signalées en émettant QSslSocket::handshakeInterruptedOnError(). Cela permet d'interrompre l'échange inachevé et d'envoyer un message d'alerte approprié à un homologue. Aucune action particulière n'est requise de la part de l'application dans ce cas. QSslSocket fermera la connexion après l'envoi du message d'alerte. Si l'application, après avoir vérifié l'erreur, souhaite poursuivre la poignée de main, elle doit appeler QSslSocket::continueInterruptedHandshake() à partir de sa fonction slot. La connexion signal-slot doit être directe.

Remarque : lorsque l'interruption de la poignée de main est activée, les erreurs qui seraient autrement signalées par QSslSocket::peerVerifyError() ne le sont que par QSslSocket::handshakeInterruptedOnError().

Remarque : même si la poignée de main s'est 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 aussi handshakeMustInterruptOnError(), QSslSocket::handshakeInterruptedOnError(), et QSslSocket::continueInterruptedHandshake().

void QSslConfiguration::setLocalCertificate(const QSslCertificate &certificate)

Définit le certificat à présenter à l'homologue pendant le handshake SSL à certificate.

La définition 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 l'extrémité 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 dans la navigation web HTTP, seuls les serveurs s'identifient auprès des clients, de sorte que le client n'envoie pas de certificat.

Voir également localCertificate().

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

Définit la chaîne de certificats à présenter à l'homologue au cours de la poignée de main SSL à localChain.

La définition 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 l'extrémité 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 dans la navigation web HTTP, seuls les serveurs s'identifient auprès des clients, de sorte que le client n'envoie pas de certificat.

Contrairement à QSslConfiguration::setLocalCertificate(), cette méthode vous permet de spécifier les certificats intermédiaires nécessaires à la validation de votre certificat. Le premier élément de la liste doit être le certificat leaf.

Voir également localCertificateChain().

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

Si cannotRecover est vrai et que le mode de vérification utilisé est QSslSocket::VerifyPeer ou QSslSocket::AutoVerifyPeer (pour une socket côté client), le certificat manquant de l'homologue sera traité comme une erreur irrécupérable qui ne peut être ignorée. Un message d'alerte approprié sera envoyé à l'homologue avant de fermer la connexion.

Remarque : Cette fonction n'est disponible que si Qt a été configuré et construit avec le backend OpenSSL.

Cette fonction a été introduite dans Qt 6.0.

Voir aussi QSslSocket::ignoreSslErrors(), QSslSocket::PeerVerifyMode, et missingCertificateIsFatal().

void QSslConfiguration::setOcspStaplingEnabled(bool enabled)

Si enabled est vrai, le client QSslSocket enverra une demande d'état de certificat à son homologue lors de l'établissement d'une poignée de main. Au cours de l'échange, QSslSocket vérifiera la réponse du serveur. Cette valeur doit être définie avant le début de la poignée de main.

Voir aussi ocspStaplingEnabled().

void QSslConfiguration::setPeerVerifyDepth(int depth)

Définit le nombre maximum de certificats de la chaîne de certificats de l'homologue à vérifier pendant la phase de poignée de main SSL, à depth. La définition d'une profondeur de 0 signifie qu'aucune profondeur maximale n'est définie, ce qui indique que toute la chaîne de certificats doit être vérifiée.

Les certificats sont vérifiés dans l'ordre d'émission, en commençant par le certificat de l'homologue, puis le certificat 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 à mode. Ce mode détermine si QSslSocket doit demander un certificat à l'homologue (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 aussi peerVerifyMode().

void QSslConfiguration::setPreSharedKeyIdentityHint(const QByteArray &hint)

Définit l'indice d'identité pour une authentification par clé prépartagée à hint. Cela affectera la prochaine poignée de main initiée ; appeler cette fonction sur une socket déjà cryptée n'affectera pas l'indice d'identité de la socket.

L'indice d'identité est utilisé dans QSslSocket::SslServerMode uniquement !

Voir aussi preSharedKeyIdentityHint().

void QSslConfiguration::setPrivateKey(const QSslKey &key)

Définit la clé privée de la connexion key à key. La clé privée et le certificat local certificate sont utilisés par les clients et les serveurs qui doivent prouver leur identité à leurs homologues SSL.

La clé et le certificat local sont nécessaires si vous créez une socket de serveur SSL. Si vous créez une socket client SSL, la clé et le certificat local sont nécessaires si votre client doit s'identifier auprès d'un serveur SSL.

Voir aussi privateKey() et setLocalCertificate().

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

Définit le paramètre de protocole pour cette configuration à protocol.

La définition du protocole une fois la connexion déjà établie n'a aucun effet.

Voir aussi protocol().

void QSslConfiguration::setSessionTicket(const QByteArray &sessionTicket)

Définit le ticket de session à utiliser dans une poignée de main SSL. QSsl::SslOptionDisableSessionPersistence doit être désactivé pour que cela fonctionne, et sessionTicket doit être au format ASN.1 tel qu'il est renvoyé par sessionTicket().

Voir aussi sessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption(), et QSslSocket::newSessionTicketReceived().

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

Active ou désactive une compatibilité SSL option. Si on est vrai, option est activé. Si on est faux, option est désactivé.

Voir aussi testSslOption().

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

Renvoie la liste des codes cryptographiques 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 aussi 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 aussi ellipticCurves() et setEllipticCurves().

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

Remplace cette instance de configuration SSL par other. Cette opération est très rapide et n'échoue jamais.

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

Cette fonction fournit la base de données des certificats de l'autorité de certification fournie par le système d'exploitation. La base de données des certificats d'autorité de certification renvoyée par cette fonction est utilisée pour initialiser la base de données renvoyée par caCertificates() sur le site par défaut QSslConfiguration.

Voir également caCertificates(), setCaCertificates(), defaultConfiguration(), addCaCertificate() et addCaCertificates().

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

Renvoie true si la compatibilité SSL spécifiée option est activée.

Voir aussi setSslOption().

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

Renvoie true si ce QSslConfiguration diffère de other. Deux objets QSslConfiguration sont considérés comme différents si un état ou un paramètre est différent.

Voir aussi 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 négocier HTTP 2 pendant la négociation du protocole de la couche application.

const char[] QSslConfiguration::NextProtocolHttp1_1

Cette variable contient la valeur utilisée pour négocier HTTP 1.1 pendant 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.