QSsl Namespace

QSsl 命名空间声明了Qt Network 中所有 SSL 类的通用枚举。更多

头文件: #include <QSsl>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

类型

(since 6.0) enum class AlertLevel { Warning, Fatal, Unknown }
(since 6.0) enum class AlertType { CloseNotify, UnexpectedMessage, BadRecordMac, RecordOverflow, DecompressionFailure, …, UnknownAlertMessage }
enum AlternativeNameEntryType { EmailEntry, DnsEntry, IpAddressEntry }
enum EncodingFormat { Pem, Der }
(since 6.1) enum class ImplementedClass { Key, Certificate, Socket, DiffieHellman, EllipticCurve, …, DtlsCookie }
enum KeyAlgorithm { Rsa, Dsa, Ec, Dh, Opaque }
enum KeyType { PrivateKey, PublicKey }
enum SslOption { SslOptionDisableEmptyFragments, SslOptionDisableSessionTickets, SslOptionDisableCompression, SslOptionDisableServerNameIndication, SslOptionDisableLegacyRenegotiation, …, SslOptionDisableServerCipherPreference }
flags SslOptions
enum SslProtocol { TlsV1_0, TlsV1_0OrLater, TlsV1_1, TlsV1_1OrLater, TlsV1_2, …, SecureProtocols }
(since 6.1) enum class SupportedFeature { CertificateVerification, ClientSideAlpn, ServerSideAlpn, Ocsp, Psk, …, Alerts }

详细说明

类型文档

[since 6.0] enum class AlertLevel

描述警报信息的级别

该枚举描述发送或接收的警报信息的级别。

常量说明
QSslSocket::AlertLevel::Warning0非致命警报信息
QSslSocket::AlertLevel::Fatal1致命警报信息,底层后台将正确处理此类警报并关闭连接。
QSslSocket::AlertLevel::Unknown2严重程度未知的警报。

此枚举在 Qt 6.0 中引入。

[since 6.0] enum class AlertType

枚举警报信息可能具有的代码

有关可能的值及其含义,请参见RFC 8446 第 6 节

常量描述
QSslSocket::AlertType::CloseNotify0,
QSslSocket::AlertType::UnexpectedMessage10
QSslSocket::AlertType::BadRecordMac20
QSslSocket::AlertType::RecordOverflow22
QSslSocket::AlertType::DecompressionFailure30
QSslSocket::AlertType::HandshakeFailure40
QSslSocket::AlertType::NoCertificate41
QSslSocket::AlertType::BadCertificate42
QSslSocket::AlertType::UnsupportedCertificate43
QSslSocket::AlertType::CertificateRevoked44
QSslSocket::AlertType::CertificateExpired45
QSslSocket::AlertType::CertificateUnknown46
QSslSocket::AlertType::IllegalParameter47
QSslSocket::AlertType::UnknownCa48
QSslSocket::AlertType::AccessDenied49
QSslSocket::AlertType::DecodeError50
QSslSocket::AlertType::DecryptError51
QSslSocket::AlertType::ExportRestriction60
QSslSocket::AlertType::ProtocolVersion70
QSslSocket::AlertType::InsufficientSecurity71
QSslSocket::AlertType::InternalError80
QSslSocket::AlertType::InappropriateFallback86
QSslSocket::AlertType::UserCancelled90
QSslSocket::AlertType::NoRenegotiation100
QSslSocket::AlertType::MissingExtension109
QSslSocket::AlertType::UnsupportedExtension110
QSslSocket::AlertType::CertificateUnobtainable111
QSslSocket::AlertType::UnrecognizedName112
QSslSocket::AlertType::BadCertificateStatusResponse113
QSslSocket::AlertType::BadCertificateHashValue114
QSslSocket::AlertType::UnknownPskIdentity115
QSslSocket::AlertType::CertificateRequired116
QSslSocket::AlertType::NoApplicationProtocol120
QSslSocket::AlertType::UnknownAlertMessage255

该枚举在 Qt 6.0 中引入。

enum QSsl::AlternativeNameEntryType

描述了QSslCertificate 中备选名称条目的关键字类型。

常量描述
QSsl::EmailEntry0电子邮件条目;该条目包含证书有效的电子邮件地址。
QSsl::DnsEntry1DNS 主机名条目;该条目包含证书有效的主机名条目。条目可包含通配符。
QSsl::IpAddressEntry2IP 地址条目;该条目包含证书有效的 IP 地址条目,在 Qt 5.13 中引入。

另请参阅 QSslCertificate::subjectAlternativeNames()。

enum QSsl::EncodingFormat

说明支持的证书和密钥编码格式。

常量描述
QSsl::Pem0PEM 格式。
QSsl::Der1DER 格式。

[since 6.1] enum class ImplementedClass

枚举 TLS 后端实现的类

QtNetwork 中,有些类是后端特定实现的,因此可以不实现。该枚举中的枚举器表示后端对哪些类有有效的实现。

常量描述
QSslSocket::ImplementedClass::Key0QSslKey.
QSslSocket::ImplementedClass::Certificate1QSslCertificate.
QSslSocket::ImplementedClass::Socket2QSslSocket.
QSslSocket::ImplementedClass::DiffieHellman3QSslDiffieHellmanParameters.
QSslSocket::ImplementedClass::EllipticCurve4QSslEllipticCurve.
QSslSocket::ImplementedClass::Dtls5班级QDtls.
QSslSocket::ImplementedClass::DtlsCookie6QDtlsClientVerifier.

该枚举在 Qt 6.1 中引入。

enum QSsl::KeyAlgorithm

描述了QSslKey 支持的不同密钥算法。

常数描述
QSsl::Rsa1RSA 算法。
QSsl::Dsa2DSA 算法。
QSsl::Ec3椭圆曲线算法。
QSsl::Dh4Diffie-Hellman 算法。
QSsl::Opaque0QSslKey 应将密钥视为 "黑盒"。

不透明密钥设施允许应用程序添加对 Qt 目前尚未提供的 PKCS#11 等设施的支持。

enum QSsl::KeyType

描述了QSslKey 支持的两种密钥类型。

常量描述
QSsl::PrivateKey0私人密钥。
QSsl::PublicKey1公钥。

枚举 QSsl::SslOption
flags QSsl::SslOptions

描述用于控制 SSL 行为细节的选项。这些选项通常用于关闭功能,以解决服务器上的错误。

常量说明
QSsl::SslOptionDisableEmptyFragments0x01使用块密码时,禁用在数据中插入空片段。启用后可防止某些攻击(如 BEAST 攻击),但与某些服务器不兼容。
QSsl::SslOptionDisableSessionTickets0x02禁用 SSL 会话票据扩展。这会导致连接设置变慢,但有些服务器与扩展不兼容。
QSsl::SslOptionDisableCompression0x04禁用 SSL 压缩扩展。启用后,可对通过 SSL 传输的数据进行压缩,但某些服务器与此扩展不兼容。
QSsl::SslOptionDisableServerNameIndication0x08禁用 SSL 服务器名称指示扩展。启用后,该扩展会告诉服务器正在访问的虚拟主机,以便服务器使用正确的证书做出响应。
QSsl::SslOptionDisableLegacyRenegotiation0x10禁用重新协商连接参数的旧式不安全机制。启用后,该选项可允许连接传统服务器,但会带来攻击者向 SSL 会话注入明文的可能性。
QSsl::SslOptionDisableSessionSharing0x20禁用通过会话 ID 握手属性共享 SSL 会话。
QSsl::SslOptionDisableSessionPersistence0x40禁用以QSslConfiguration::sessionTicket() 返回的 ASN.1 格式存储 SSL 会话。启用此功能会增加内存开销,每个已使用的会话票据约为 1K。
QSsl::SslOptionDisableServerCipherPreference0x80禁止根据服务器的偏好选择密码,而不是根据客户端发送密码的顺序。该选项仅适用于服务器套接字,且仅由 OpenSSL 后端执行。

默认情况下,SslOptionDisableEmptyFragments(禁用空字段)选项处于开启状态,因为这会导致大量服务器出现问题。SslOptionDisableLegacyRenegotiation(禁用传统重新协商)也已开启,因为它会带来安全风险。开启 SslOptionDisableCompression 是为了防止 CRIME 公开的攻击。开启 SslOptionDisableSessionPersistence 是为了优化内存使用。其他选项关闭。

注: 上述选项的可用性取决于所使用的 SSL 后端版本。

SslOptions 类型是QFlags<SslOption> 的类型定义。它存储 SslOption 值的 OR 组合。

enum QSsl::SslProtocol

描述密码的协议。

常数描述
QSsl::TlsV1_00TLSv1.0
QSsl::TlsV1_0OrLater5TLSv1.0 及更高版本。
QSsl::TlsV1_11TLSv1.1
QSsl::TlsV1_1OrLater6TLSv1.1 及更高版本。
QSsl::TlsV1_22TLSv1.2.
QSsl::TlsV1_2OrLater7TLSv1.2 及更高版本。
QSsl::DtlsV1_08DTLSv1.0
QSsl::DtlsV1_0OrLater9DTLSv1.0 及更高版本。
QSsl::DtlsV1_210DTLSv1.2
QSsl::DtlsV1_2OrLater11DTLSv1.2 及更高版本。
QSsl::TlsV1_3 (since Qt 5.12)12TLSv1.3
QSsl::TlsV1_3OrLater (since Qt 5.12)13TLSv1.3 及更高版本。
QSsl::UnknownProtocol-1无法确定密码协议。
QSsl::AnyProtocol3任何支持的协议。此值仅供QSslSocket 使用。
QSsl::SecureProtocols4默认选项,使用已知安全的协议。

[since 6.1] enum class SupportedFeature

枚举 TLS 后端可能支持的功能

QtNetwork 中,TLS 相关类具有公共应用程序接口,但某些后端可能无法实现这些应用程序接口,例如,我们的 SecureTransport 后端不支持服务器端 ALPN。SupportedFeature 枚举中的枚举器表示支持特定功能。

常量说明
QSslSocket::SupportedFeature::CertificateVerification0表示QSslCertificate::verify() 由后端实现。
QSslSocket::SupportedFeature::ClientSideAlpn1客户端 ALPN(应用层协议协商)。
QSslSocket::SupportedFeature::ServerSideAlpn2服务器端 ALPN。
QSslSocket::SupportedFeature::Ocsp3OCSP stapling(在线证书状态协议)。
QSslSocket::SupportedFeature::Psk4预共享密钥。
QSslSocket::SupportedFeature::SessionTicket5会话票据
QSslSocket::SupportedFeature::Alerts6发送和接收的警报信息。

该枚举在 Qt 6.1 中引入。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.