En esta página

QSslConfiguration Class

La clase QSslConfiguration contiene la configuración y el estado de una conexión SSL. Más...

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

Nota: Todas las funciones de esta clase son reentrantes.

Tipos Públicos

enum NextProtocolNegotiationStatus { NextProtocolNegotiationNone, NextProtocolNegotiationNegotiated, NextProtocolNegotiationUnsupported }

Funciones Públicas

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

Miembros Públicos Estáticos

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

Descripción Detallada

QSslConfiguration es utilizada por las clases de red de Qt para transmitir información sobre una conexión SSL abierta y permitir a la aplicación controlar ciertas características de esa conexión.

Las opciones que QSslConfiguration soporta actualmente son:

  • El protocolo SSL/TLS a utilizar
  • El certificado a presentar al peer durante la conexión y su clave privada asociada
  • Los cifrados permitidos para cifrar la conexión
  • La lista de certificados de Autoridades de Certificación que se utilizan para validar el certificado del par.

Estos parámetros sólo se aplican durante el establecimiento de la conexión. Configurarlos una vez establecida la conexión no tiene ningún efecto.

Los estados que soporta QSslConfiguration son:

  • El certificado que el peer presentó durante el handshake, junto con la cadena que lleva a un certificado CA.
  • El cifrado utilizado para cifrar esta sesión

El estado sólo puede obtenerse una vez que se inicia la conexión SSL, pero no necesariamente antes de que termine. Algunos parámetros pueden cambiar durante el transcurso de la conexión SSL sin necesidad de reiniciarla (por ejemplo, el cifrado puede cambiar con el tiempo).

El estado de los objetos QSslConfiguration no puede cambiarse.

QSslConfiguration puede utilizarse con QSslSocket y la API de acceso a redes.

Tenga en cuenta que cambiar la configuración en QSslConfiguration no es suficiente para cambiar la configuración en la conexión SSL relacionada. Debe llamar a setSslConfiguration en un objeto QSslConfiguration modificado para lograrlo. El siguiente ejemplo ilustra cómo cambiar el protocolo a TLSv1_2 en un objeto QSslSocket:

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

Véase también QSsl::SslProtocol, QSslCertificate, QSslCipher, QSslKey, QSslSocket, QNetworkAccessManager, QSslSocket::sslConfiguration(), y QSslSocket::setSslConfiguration().

Documentación de tipos de miembros

enum QSslConfiguration::NextProtocolNegotiationStatus

Describe el estado de la negociación del siguiente protocolo (NPN) o de la negociación del protocolo de capa de aplicación (ALPN).

ConstanteValorDescripción
QSslConfiguration::NextProtocolNegotiationNone0No se ha negociado ningún protocolo de aplicación (todavía).
QSslConfiguration::NextProtocolNegotiationNegotiated1Se ha negociado un siguiente protocolo (véase nextNegotiatedProtocol()).
QSslConfiguration::NextProtocolNegotiationUnsupported2El cliente y el servidor no han podido ponerse de acuerdo sobre un próximo protocolo de aplicación común.

Documentación de las funciones

QSslConfiguration::QSslConfiguration()

Construye una configuración SSL vacía. Esta configuración no contiene ajustes válidos y el estado estará vacío. isNull() devolverá true después de llamar a este constructor.

Una vez que se llame a cualquier método setter, isNull() devolverá false.

QSslConfiguration::QSslConfiguration(const QSslConfiguration &other)

Copia la configuración y el estado de other. Si other es nulo, este objeto también lo será.

[noexcept] QSslConfiguration::~QSslConfiguration()

Libera los recursos retenidos por QSslConfiguration.

void QSslConfiguration::addCaCertificate(const QSslCertificate &certificate)

Añade certificate a la base de datos de certificados CA de esta configuración. La base de datos de certificados debe configurarse antes del handshake SSL. La base de datos de certificados CA es utilizada por el socket durante la fase de handshake para validar el certificado del peer.

Nota: La configuración por defecto utiliza la base de datos de certificados CA del sistema. Si no está disponible (como suele ocurrir en iOS), la base de datos predeterminada estará vacía.

Véase también caCertificates(), setCaCertificates() y addCaCertificates().

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

Añade certificates a la base de datos de certificados CA de esta configuración. La base de datos de certificados debe configurarse antes del handshake SSL. La base de datos de certificados CA es utilizada por el socket durante la fase de handshake para validar el certificado del peer.

Nota: La configuración por defecto utiliza la base de datos de certificados CA del sistema. Si no está disponible (como suele ocurrir en iOS), la base de datos predeterminada estará vacía.

Véase también caCertificates(), setCaCertificates() y addCaCertificate().

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

Busca en todos los archivos de path certificados codificados en el formato especificado format y los añade a la base de datos de certificados de CA de este socket. path debe ser un archivo o un patrón que coincida con uno o más archivos, como se especifica en syntax. Devuelve true si se añaden uno o más certificados a la base de datos de certificados CA del socket; en caso contrario, devuelve false.

La base de datos de certificados CA es utilizada por el socket durante la fase de handshake para validar el certificado del peer.

Para un control más preciso, utilice addCaCertificate().

Véase también addCaCertificate() y QSslCertificate::fromPath().

QList<QByteArray> QSslConfiguration::allowedNextProtocols() const

Esta función devuelve los protocolos permitidos para ser negociados con el servidor a través de la extensión TLS Next Protocol Negotiation (NPN) o Application-Layer Protocol Negotiation (ALPN), según lo establecido por setAllowedNextProtocols().

Véase también nextNegotiatedProtocol(), nextProtocolNegotiationStatus(), setAllowedNextProtocols(), y QSslConfiguration::NextProtocolHttp1_1.

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

Devuelve la configuración específica del backend.

Sólo se devolverán las opciones establecidas por setBackendConfigurationOption() o setBackendConfiguration(). La configuración estándar interna del backend no se devuelve.

Véase también setBackendConfigurationOption() y setBackendConfiguration().

QList<QSslCertificate> QSslConfiguration::caCertificates() const

Devuelve la base de datos de certificados CA de esta conexión. La base de datos de certificados CA es utilizada por el socket durante la fase de handshake para validar el certificado del peer. Puede ser modificada antes del handshake con setCaCertificates(), o con addCaCertificate() y addCaCertificates().

Véase también setCaCertificates(), addCaCertificate() y addCaCertificates().

QList<QSslCipher> QSslConfiguration::ciphers() const

Devuelve el conjunto de cifrado criptográfico actual de esta conexión. Esta lista se utiliza durante la fase de apretón de manos para elegir un cifrado de sesión. La lista de cifradores devuelta está ordenada por preferencia descendente. (es decir, el primer cifrado de la lista es el más preferido). El cifrado de sesión será el primero de la lista que también esté soportado por el peer.

Por defecto, la fase de handshake puede elegir cualquiera de los cifradores soportados por las librerías SSL de este sistema, que pueden variar de un sistema a otro. La lista de cifradores admitidos por las bibliotecas SSL de este sistema se devuelve mediante supportedCiphers(). Puedes restringir la lista de cifradores usados para elegir el cifrado de sesión para este socket llamando a setCiphers() con un subconjunto de los cifradores soportados. Puede volver a utilizar el conjunto completo llamando a setCiphers() con la lista devuelta por supportedCiphers().

Véase también setCiphers() y supportedCiphers().

[static] QSslConfiguration QSslConfiguration::defaultConfiguration()

Devuelve la configuración SSL por defecto que se utilizará en las nuevas conexiones SSL.

La configuración SSL por defecto consiste en

  • sin certificado local y sin clave privada
  • protocolo SecureProtocols
  • la lista de certificados CA por defecto del sistema
  • la lista de cifrados igual a la lista de cifrados SSL soportados por las librerías SSL de 128 bits o más.

Véase también supportedCiphers() y setDefaultConfiguration().

[static] QSslConfiguration QSslConfiguration::defaultDtlsConfiguration()

Devuelve la configuración DTLS por defecto que se utilizará en las nuevas conexiones DTLS.

La configuración DTLS por defecto consiste en

  • sin certificado local y sin clave privada
  • protocolo DtlsV1_2OrLater
  • la lista de certificados CA por defecto del sistema
  • la lista de cifrado igual a la lista de cifrados TLS 1.2 soportados por las librerías SSL que utilizan 128 o más bits secretos para el cifrado.

Véase también setDefaultDtlsConfiguration().

QSslDiffieHellmanParameters QSslConfiguration::diffieHellmanParameters() const

Recupera el conjunto actual de parámetros Diffie-Hellman.

Si no se han establecido parámetros Diffie-Hellman, el objeto QSslConfiguration utiliza por defecto el grupo MODP de 2048 bits del RFC 3526.

Nota: Los parámetros por defecto pueden cambiar en futuras versiones de Qt. Por favor, consulte la documentación de la versión exacta de Qt que esté utilizando para saber qué parámetros por defecto utiliza esa versión.

Véase también setDiffieHellmanParameters().

bool QSslConfiguration::dtlsCookieVerificationEnabled() const

Esta función devuelve true si se habilitó la verificación de cookies DTLS en un socket del lado del servidor.

Véase también setDtlsCookieVerificationEnabled().

QList<QSslEllipticCurve> QSslConfiguration::ellipticCurves() const

Devuelve la lista actual de curvas elípticas de esta conexión. Esta lista se utiliza durante la fase de apretón de manos para elegir una curva elíptica (cuando se utiliza un cifrado de curva elíptica). La lista de curvas devuelta está ordenada por preferencia descendente (es decir, la primera curva de la lista es la más preferida).

Por defecto, la fase de handshake puede elegir cualquiera de las curvas soportadas por las librerías SSL de este sistema, que pueden variar de un sistema a otro. La lista de curvas soportadas por las librerías SSL de este sistema es devuelta por QSslSocket::supportedEllipticCurves().

Puedes restringir la lista de curvas usadas para elegir el cifrado de sesión para este socket llamando a setEllipticCurves() con un subconjunto de los cifrados soportados. Puede volver a usar el conjunto completo llamando a setEllipticCurves() con la lista devuelta por QSslSocket::supportedEllipticCurves().

Véase también setEllipticCurves.

QSslKey QSslConfiguration::ephemeralServerKey() const

Devuelve la clave efímera del servidor utilizada para algoritmos de cifrado con forward secrecy, por ejemplo DHE-RSA-AES128-SHA.

La clave efímera sólo está disponible cuando se ejecuta en modo cliente, es decir, QSslSocket::SslClientMode. Cuando se ejecuta en modo servidor o se utiliza un algoritmo de cifrado sin forward secrecy, se devuelve una clave nula. La clave efímera del servidor se establecerá antes de emitir la señal encrypted().

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

Devuelve true si un callback de verificación emitirá QSslSocket::handshakeInterruptedOnError() antes de tiempo, antes de concluir el handshake.

Nota: Esta función siempre devuelve false para todos los backends excepto OpenSSL.

Esta función se introdujo en Qt 6.0.

Véase también setHandshakeMustInterruptOnError(), QSslSocket::handshakeInterruptedOnError(), y QSslSocket::continueInterruptedHandshake().

bool QSslConfiguration::isNull() const

Devuelve true si se trata de un objeto QSslConfiguration nulo.

Un objeto QSslConfiguration es nulo si ha sido construido por defecto y no se ha llamado a ningún método setter.

Véase también setProtocol(), setLocalCertificate(), setPrivateKey(), setCiphers() y setCaCertificates().

QSslCertificate QSslConfiguration::localCertificate() const

Devuelve el certificado que se presentará al peer durante el proceso de handshake SSL.

Véase también setLocalCertificate().

QList<QSslCertificate> QSslConfiguration::localCertificateChain() const

Devuelve la cadena de certificados que se presentará al peer durante el proceso de handshake SSL.

Véase también setLocalCertificateChain() y localCertificate().

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

Devuelve true si los errores con código QSslError::NoPeerCertificate no pueden ser ignorados.

Nota: Siempre devuelve false para todos los backends TLS excepto OpenSSL.

Esta función se introdujo en Qt 6.0.

Véase también QSslSocket::ignoreSslErrors() y setMissingCertificateIsFatal().

QByteArray QSslConfiguration::nextNegotiatedProtocol() const

Esta función devuelve el protocolo negociado con el servidor si la extensión TLS Next Protocol Negotiation (NPN) o Application-Layer Protocol Negotiation (ALPN) estaba habilitada. Para que la extensión NPN/ALPN esté habilitada, es necesario llamar explícitamente a setAllowedNextProtocols() antes de conectarse al servidor.

Si no se pudo negociar ningún protocolo o no se habilitó la extensión, esta función devuelve un QByteArray que es null.

Véase también setAllowedNextProtocols() y nextProtocolNegotiationStatus().

QSslConfiguration::NextProtocolNegotiationStatus QSslConfiguration::nextProtocolNegotiationStatus() const

Esta función devuelve el estado de la Negociación del Siguiente Protocolo (NPN) o de la Negociación del Protocolo de Capa de Aplicación (ALPN). Si la función no ha sido habilitada a través de setAllowedNextProtocols(), esta función devuelve NextProtocolNegotiationNone. El estado se establecerá antes de emitir la señal encrypted().

Véase también setAllowedNextProtocols(), allowedNextProtocols(), nextNegotiatedProtocol() y QSslConfiguration::NextProtocolNegotiationStatus.

bool QSslConfiguration::ocspStaplingEnabled() const

Devuelve true si el grapado OCSP fue habilitado por setOCSPStaplingEnabled(), de lo contrario false (que es el valor por defecto).

Véase también setOcspStaplingEnabled().

QSslCertificate QSslConfiguration::peerCertificate() const

Devuelve el certificado digital del peer (es decir, el certificado inmediato del host al que se está conectado), o un certificado nulo, si el peer no ha asignado un certificado.

El certificado del peer se comprueba automáticamente durante la fase de handshake, por lo que esta función se utiliza normalmente para obtener el certificado para su visualización o con fines de diagnóstico de la conexión. Contiene información sobre el peer, incluyendo su nombre de host, el emisor del certificado y la clave pública del peer.

Debido a que el certificado del peer se establece durante la fase de handshake, es seguro acceder al certificado del peer desde una ranura conectada a la señal QSslSocket::sslErrors(), a la señal QNetworkReply::sslErrors(), o a la señal QSslSocket::encrypted().

Si se devuelve un certificado nulo, puede significar que el handshake SSL falló, o puede significar que el host al que estás conectado no tiene certificado, o puede significar que no hay conexión.

Si desea comprobar la cadena completa de certificados del homólogo, utilice peerCertificateChain() para obtenerlos todos a la vez.

Véase también peerCertificateChain(), QSslSocket::sslErrors(), QSslSocket::ignoreSslErrors(), QNetworkReply::sslErrors() y QNetworkReply::ignoreSslErrors().

QList<QSslCertificate> QSslConfiguration::peerCertificateChain() const

Devuelve la cadena de certificados digitales del par, empezando por el certificado inmediato del par y terminando con el certificado de la CA.

Los certificados de los pares se comprueban automáticamente durante la fase de enlace. Esta función se utiliza normalmente para obtener certificados para su visualización o para realizar diagnósticos de conexión. Los certificados contienen información sobre el par y los emisores del certificado, incluyendo el nombre del host, los nombres de los emisores y las claves públicas de los emisores.

Dado que el certificado del peer se establece durante la fase de handshake, es seguro acceder al certificado del peer desde una ranura conectada a la señal QSslSocket::sslErrors(), a la señal QNetworkReply::sslErrors() o a la señal QSslSocket::encrypted().

Si se devuelve una lista vacía, puede significar que el handshake SSL falló, o puede significar que el host al que estás conectado no tiene certificado, o puede significar que no hay conexión.

Si sólo desea obtener el certificado inmediato del homólogo, utilice peerCertificate().

Véase también peerCertificate(), QSslSocket::sslErrors(), QSslSocket::ignoreSslErrors(), QNetworkReply::sslErrors() y QNetworkReply::ignoreSslErrors().

int QSslConfiguration::peerVerifyDepth() const

Devuelve el número máximo de certificados de la cadena de certificados del par que se comprobarán durante la fase de enlace SSL, o 0 (valor predeterminado) si no se ha establecido ninguna profundidad máxima, lo que indica que se debe comprobar toda la cadena de certificados.

Los certificados se comprueban en orden de emisión, empezando por el propio certificado del peer, luego el certificado de su emisor, y así sucesivamente.

Véase también setPeerVerifyDepth() y peerVerifyMode().

QSslSocket::PeerVerifyMode QSslConfiguration::peerVerifyMode() const

Devuelve el modo de verificación. Este modo decide si QSslSocket debe solicitar un certificado al par (es decir, el cliente solicita un certificado al servidor, o un servidor solicita un certificado al cliente), y si debe requerir que este certificado sea válido.

El modo predeterminado es AutoVerifyPeer, que indica a QSslSocket que utilice VerifyPeer para los clientes y QueryPeer para los servidores.

Véase también setPeerVerifyMode().

QByteArray QSslConfiguration::preSharedKeyIdentityHint() const

Devuelve la pista de identidad.

Véase también setPreSharedKeyIdentityHint().

QSslKey QSslConfiguration::privateKey() const

Devuelve la SSL key asignada a esta conexión o una clave nula si aún no se ha asignado ninguna.

Véase también setPrivateKey() y localCertificate().

QSsl::SslProtocol QSslConfiguration::protocol() const

Devuelve la configuración del protocolo para esta configuración SSL.

Véase también setProtocol().

QSslCipher QSslConfiguration::sessionCipher() const

Devuelve el cifrado del socket cipher, o un cifrado nulo si la conexión no está cifrada. El cifrado del socket para la sesión se establece durante la fase de handshake. El cifrado se utiliza para cifrar y descifrar los datos transmitidos a través del socket.

La infraestructura SSL también proporciona funciones para establecer la lista ordenada de cifradores de la que la fase de handshake seleccionará finalmente el cifrado de la sesión. Esta lista ordenada debe estar lista antes de que comience la fase de handshake.

Véase también ciphers(), setCiphers(), y supportedCiphers().

QSsl::SslProtocol QSslConfiguration::sessionProtocol() const

Devuelve el protocolo SSL/TLS del socket o UnknownProtocol si la conexión no está cifrada. El protocolo del socket para la sesión se establece durante la fase de handshake.

Véase también protocol() y setProtocol().

QByteArray QSslConfiguration::sessionTicket() const

Si QSsl::SslOptionDisableSessionPersistence estaba desactivado, esta función devuelve el ticket de sesión utilizado en el handshake SSL en formato ASN.1, adecuado para, por ejemplo, ser almacenado en disco. Si no se utilizó ningún ticket de sesión o QSsl::SslOptionDisableSessionPersistence no estaba desactivado, esta función devuelve un QByteArray vacío.

Nota: Cuando se guarda el ticket de sesión en disco o similar, hay que tener cuidado de no exponer la sesión a un atacante potencial, ya que el conocimiento de la sesión permite espiar los datos cifrados con los parámetros de sesión.

Véase también setSessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption(), y QSslSocket::newSessionTicketReceived().

int QSslConfiguration::sessionTicketLifeTimeHint() const

Si QSsl::SslOptionDisableSessionPersistence estaba desactivado, esta función devuelve la pista de tiempo de vida del ticket de sesión enviada por el servidor (que puede ser 0). Si el servidor no envió un ticket de sesión (por ejemplo, al reanudar una sesión o cuando el servidor no lo soporta) o QSsl::SslOptionDisableSessionPersistence no estaba desactivado, esta función devuelve -1.

Véase también sessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption(), y QSslSocket::newSessionTicketReceived().

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

Esta función establece los protocols permitidos que se negociarán con el servidor a través de la extensión TLS Next Protocol Negotiation (NPN) o Application-Layer Protocol Negotiation (ALPN); cada elemento de protocols debe definir un protocolo permitido. La función debe ser llamada explícitamente antes de conectarse para enviar la extensión NPN/ALPN en el handshake SSL. Si la negociación ha tenido éxito o no, puede consultarse a través de nextProtocolNegotiationStatus().

Véase también nextNegotiatedProtocol(), nextProtocolNegotiationStatus(), allowedNextProtocols(), y QSslConfiguration::NextProtocolHttp1_1.

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

Establece o borra la configuración específica del backend.

Sin el parámetro backendConfiguration, esta función borrará la configuración específica del módulo de servicio. Encontrará más información sobre las opciones disponibles en la documentación de setBackendConfigurationOption().

Véase también backendConfiguration() y setBackendConfigurationOption().

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

Establece la opción name en la configuración específica del backend a value.

Las opciones soportadas por el backend OpenSSL (>= 1.0.2) están disponibles en la documentación de comandos de archivos de configuración soportados. El tipo esperado para el parámetro value es QByteArray para todas las opciones. Los ejemplos muestran cómo utilizar algunas de las opciones.

Nota: La configuración específica del backend se aplicará después de la configuración general. El uso de la configuración específica del backend para establecer de nuevo una opción de configuración general sobrescribirá la opción de configuración general.

Véase también backendConfiguration() y setBackendConfiguration().

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

Establece la base de datos de certificados CA de este socket en certificates. La base de datos de certificados debe configurarse antes del handshake SSL. La base de datos de certificados CA es utilizada por el socket durante la fase de handshake para validar el certificado del peer.

Nota: La configuración por defecto utiliza la base de datos de certificados CA del sistema. Si no está disponible (como suele ocurrir en iOS), la base de datos predeterminada estará vacía.

Véase también caCertificates(), addCaCertificates() y addCaCertificate().

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

Establece el conjunto de cifrado criptográfico para este socket en ciphers, que debe contener un subconjunto de los cifradores de la lista devuelta por supportedCiphers().

La restricción del conjunto de cifrado debe hacerse antes de la fase de apretón de manos, en la que se elige el cifrado de sesión.

Véase también ciphers() y supportedCiphers().

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

Establece el conjunto de cifrado criptográfico para esta configuración en ciphers, que es una lista separada por dos puntos de nombres de conjuntos de cifrado. Los cifrados se enumeran por orden de preferencia, empezando por el cifrado preferido. Cada nombre de cifrado en ciphers debe ser el nombre de un cifrado en la lista devuelta por supportedCiphers(). La restricción del conjunto de cifrado debe realizarse antes de la fase de apretón de manos, en la que se elige el cifrado de sesión.

Nota: Con el backend Schannel el orden de los cifradores es ignorado y Schannel escoge el más seguro durante el handshake.

Esta función se introdujo en Qt 6.0.

Véase también ciphers().

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

Establece la configuración SSL predeterminada que se utilizará en las nuevas conexiones SSL en configuration. Las conexiones existentes no se ven afectadas por esta llamada.

Véase también supportedCiphers() y defaultConfiguration().

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

Establece la configuración DTLS predeterminada que se utilizará en las nuevas conexiones DTLS en configuration. Las conexiones existentes no se ven afectadas por esta llamada.

Véase también defaultDtlsConfiguration().

void QSslConfiguration::setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams)

Establece un conjunto personalizado de parámetros Diffie-Hellman a utilizar por este socket cuando funcione como servidor a dhparams.

Si no se han establecido parámetros Diffie-Hellman, el objeto QSslConfiguration utiliza por defecto el grupo MODP de 2048 bits del RFC 3526.

Desde la versión 6.7 puede proporcionar un parámetro Diffie-Hellman vacío para utilizar la selección automática (véase SSL_CTX_set_dh_auto de openssl) si el backend tls lo soporta.

Nota: Los parámetros por defecto pueden cambiar en futuras versiones de Qt. Por favor, consulte la documentación de la versión exacta de Qt que esté usando para saber qué parámetros por defecto utiliza esa versión.

Véase también diffieHellmanParameters().

void QSslConfiguration::setDtlsCookieVerificationEnabled(bool enable)

Esta función habilita la verificación de cookies DTLS cuando enable es true.

Véase también dtlsCookieVerificationEnabled().

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

Establece la lista de curvas elípticas a utilizar por este socket en curves, que debe contener un subconjunto de las curvas de la lista devuelta por supportedEllipticCurves().

La restricción de las curvas elípticas debe hacerse antes de la fase de apretón de manos, en la que se elige el cifrado de sesión.

Véase también ellipticCurves.

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

Si interrupt es verdadero y el backend subyacente soporta esta opción, los errores encontrados durante la verificación del certificado se notifican inmediatamente emitiendo QSslSocket::handshakeInterruptedOnError(). Esto permite detener el handshake inacabado y enviar un mensaje de alerta apropiado a un peer. No se requiere ninguna acción especial por parte de la aplicación en este caso. QSslSocket cerrará la conexión después de enviar el mensaje de alerta. Si la aplicación después de inspeccionar el error quiere continuar el handshake, debe llamar a QSslSocket::continueInterruptedHandshake() desde su función slot. La conexión señal-ranura debe ser directa.

Nota: Cuando la interrupción del handshake está activada, los errores que de otra forma serían notificados por QSslSocket::peerVerifyError() son notificados únicamente por QSslSocket::handshakeInterruptedOnError().

Nota: Aunque el handshake haya continuado, estos errores se notificarán al emitir la señal QSslSocket::sslErrors() (y, por tanto, deben ignorarse en la ranura de función correspondiente).

Esta función se introdujo en Qt 6.0.

Véase también handshakeMustInterruptOnError(), QSslSocket::handshakeInterruptedOnError(), y QSslSocket::continueInterruptedHandshake().

void QSslConfiguration::setLocalCertificate(const QSslCertificate &certificate)

Establece que el certificado que se presentará al homólogo durante el handshake SSL sea certificate.

La configuración del certificado una vez establecida la conexión no tiene ningún efecto.

Un certificado es el medio de identificación utilizado en el proceso SSL. El certificado local es utilizado por el extremo remoto para verificar la identidad del usuario local contra su lista de Autoridades de Certificación. En la mayoría de los casos, como en la navegación web HTTP, sólo los servidores se identifican ante los clientes, por lo que el cliente no envía un certificado.

Véase también localCertificate().

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

Establece la cadena de certificados que se presentará al peer durante el handshake SSL en localChain.

La configuración de la cadena de certificados una vez establecida la conexión no tiene ningún efecto.

Un certificado es el medio de identificación utilizado en el proceso SSL. El certificado local es utilizado por el extremo remoto para verificar la identidad del usuario local contra su lista de Autoridades de Certificación. En la mayoría de los casos, como en la navegación web HTTP, sólo los servidores se identifican ante los clientes, por lo que el cliente no envía un certificado.

A diferencia de QSslConfiguration::setLocalCertificate(), este método permite especificar los certificados intermedios necesarios para validar el certificado. El primer elemento de la lista debe ser el certificado hoja.

Véase también localCertificateChain().

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

Si cannotRecover es verdadero, y el modo de verificación en uso es QSslSocket::VerifyPeer o QSslSocket::AutoVerifyPeer (para un socket del lado del cliente), el certificado faltante del par se trataría como un error irrecuperable que no se puede ignorar. Se enviará un mensaje de alerta al par antes de cerrar la conexión.

Nota: Sólo disponible si Qt fue configurado y construido con el backend OpenSSL.

Esta función se introdujo en Qt 6.0.

Ver también QSslSocket::ignoreSslErrors(), QSslSocket::PeerVerifyMode, y missingCertificateIsFatal().

void QSslConfiguration::setOcspStaplingEnabled(bool enabled)

Si enabled es verdadero, el cliente QSslSocket enviará una solicitud de estado de certificado a su homólogo al iniciar un handshake. Durante el handshake QSslSocket verificará la respuesta del servidor. Este valor debe establecerse antes de que comience el handshake.

Véase también ocspStaplingEnabled().

void QSslConfiguration::setPeerVerifyDepth(int depth)

Establece el número máximo de certificados de la cadena de certificados del homólogo que se comprobarán durante la fase de enlace SSL, en depth. Establecer una profundidad de 0 significa que no se establece ninguna profundidad máxima, lo que indica que se debe comprobar toda la cadena de certificados.

Los certificados se comprueban en orden de emisión, empezando por el propio certificado del par, luego el certificado de su emisor, y así sucesivamente.

Véase también peerVerifyDepth() y setPeerVerifyMode().

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

Establece el modo de verificación en mode. Este modo decide si QSslSocket debe solicitar un certificado al par (es decir, el cliente solicita un certificado al servidor, o un servidor solicita un certificado al cliente), y si debe requerir que este certificado sea válido.

El modo predeterminado es AutoVerifyPeer, que indica a QSslSocket que utilice VerifyPeer para los clientes y QueryPeer para los servidores.

Véase también peerVerifyMode().

void QSslConfiguration::setPreSharedKeyIdentityHint(const QByteArray &hint)

Establece la sugerencia de identidad para una autenticación de clave precompartida en hint. Esto afectará al siguiente handshake iniciado; llamar a esta función en un socket ya cifrado no afectará a la sugerencia de identidad del socket.

La pista de identidad sólo se utiliza en QSslSocket::SslServerMode.

Véase también preSharedKeyIdentityHint().

void QSslConfiguration::setPrivateKey(const QSslKey &key)

Establece la key privada de la conexión en key. La clave privada y el certificate local son utilizados por los clientes y servidores que deben demostrar su identidad a los pares SSL.

Tanto la clave como el certificado local son necesarios si estás creando un socket de servidor SSL. Si está creando un socket cliente SSL, la clave y el certificado local son necesarios si su cliente debe identificarse ante un servidor SSL.

Véase también privateKey() y setLocalCertificate().

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

Establece el protocolo de esta configuración en protocol.

Establecer el protocolo una vez que la conexión ya se ha establecido no tiene ningún efecto.

Véase también protocol().

void QSslConfiguration::setSessionTicket(const QByteArray &sessionTicket)

Establece el ticket de sesión a utilizar en un handshake SSL. QSsl::SslOptionDisableSessionPersistence debe estar desactivado para que esto funcione, y sessionTicket debe estar en formato ASN.1 como el devuelto por sessionTicket().

Véase también sessionTicket(), QSsl::SslOptionDisableSessionPersistence, setSslOption(), y QSslSocket::newSessionTicketReceived().

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

Activa o desactiva una compatibilidad SSL option. Si on es verdadero, se habilita option. Si on es falso, se desactiva option.

Véase también testSslOption().

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

Devuelve la lista de cifrados criptográficos soportados por este sistema. Esta lista la establecen las bibliotecas SSL del sistema y puede variar de un sistema a otro.

Véase también ciphers() y setCiphers().

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

Devuelve la lista de curvas elípticas soportadas por este sistema. Esta lista la establecen las bibliotecas SSL del sistema y puede variar de un sistema a otro.

Véase también ellipticCurves() y setEllipticCurves().

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

Intercambia esta instancia de configuración SSL con other. Esta operación es muy rápida y nunca falla.

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

Esta función proporciona la base de datos de certificados CA proporcionada por el sistema operativo. La base de datos de certificados CA devuelta por esta función se utiliza para inicializar la base de datos devuelta por caCertificates() en el valor predeterminado QSslConfiguration.

Véase también caCertificates(), setCaCertificates(), defaultConfiguration(), addCaCertificate(), y addCaCertificates().

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

Devuelve true si la compatibilidad SSL especificada option está activada.

Véase también setSslOption().

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

Devuelve true si este QSslConfiguration difiere de other. Dos objetos QSslConfiguration se consideran diferentes si cualquier estado o configuración es diferente.

Véase también operator==().

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

Copia la configuración y el estado de other. Si other es nulo, este objeto también lo será.

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

Devuelve true si este objeto QSslConfiguration es igual a other.

Dos objetos QSslConfiguration se consideran iguales si tienen exactamente la misma configuración y estado.

Véase también operator!=().

Documentación de variables miembro

const char[] QSslConfiguration::ALPNProtocolHTTP2

Esta variable contiene el valor utilizado para negociar HTTP 2 durante la negociación del protocolo de capa de aplicación.

const char[] QSslConfiguration::NextProtocolHttp1_1

Esta variable contiene el valor utilizado para negociar HTTP 1.1 durante la negociación del siguiente protocolo.

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