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 |
- QSsl 是网络编程 API 的一部分。
类型
(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 { MlDsa, 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::Warning | 0 | 非致命警报消息 |
QSslSocket::AlertLevel::Fatal | 1 | 致命警报消息,底层后端将正确处理此类警报并关闭连接。 |
QSslSocket::AlertLevel::Unknown | 2 | 严重程度未知的警报。 |
此枚举类型在 Qt 6.0 中引入。
[since 6.0] enum class AlertType
列举了警报消息可能包含的代码
有关可能的值及其含义,请参阅RFC 8446 第 6 节。
| 常量 | 值 | 描述 |
|---|---|---|
QSslSocket::AlertType::CloseNotify | 0 | , |
QSslSocket::AlertType::UnexpectedMessage | 10 | |
QSslSocket::AlertType::BadRecordMac | 20 | |
QSslSocket::AlertType::RecordOverflow | 22 | |
QSslSocket::AlertType::DecompressionFailure | 30 | |
QSslSocket::AlertType::HandshakeFailure | 40 | |
QSslSocket::AlertType::NoCertificate | 41 | |
QSslSocket::AlertType::BadCertificate | 42 | |
QSslSocket::AlertType::UnsupportedCertificate | 43 | |
QSslSocket::AlertType::CertificateRevoked | 44 | |
QSslSocket::AlertType::CertificateExpired | 45 | |
QSslSocket::AlertType::CertificateUnknown | 46 | |
QSslSocket::AlertType::IllegalParameter | 47 | |
QSslSocket::AlertType::UnknownCa | 48 | |
QSslSocket::AlertType::AccessDenied | 49 | |
QSslSocket::AlertType::DecodeError | 50 | |
QSslSocket::AlertType::DecryptError | 51 | |
QSslSocket::AlertType::ExportRestriction | 60 | |
QSslSocket::AlertType::ProtocolVersion | 70 | |
QSslSocket::AlertType::InsufficientSecurity | 71 | |
QSslSocket::AlertType::InternalError | 80 | |
QSslSocket::AlertType::InappropriateFallback | 86 | |
QSslSocket::AlertType::UserCancelled | 90 | |
QSslSocket::AlertType::NoRenegotiation | 100 | |
QSslSocket::AlertType::MissingExtension | 109 | |
QSslSocket::AlertType::UnsupportedExtension | 110 | |
QSslSocket::AlertType::CertificateUnobtainable | 111 | |
QSslSocket::AlertType::UnrecognizedName | 112 | |
QSslSocket::AlertType::BadCertificateStatusResponse | 113 | |
QSslSocket::AlertType::BadCertificateHashValue | 114 | |
QSslSocket::AlertType::UnknownPskIdentity | 115 | |
QSslSocket::AlertType::CertificateRequired | 116 | |
QSslSocket::AlertType::NoApplicationProtocol | 120 | |
QSslSocket::AlertType::UnknownAlertMessage | 255 |
该枚举在 Qt 6.0 中引入。
enum QSsl::AlternativeNameEntryType
描述了QSslCertificate 中别名条目的关键类型。
| 常量 | 值 | 描述 |
|---|---|---|
QSsl::EmailEntry | 0 | 电子邮件条目;该条目包含证书所适用的电子邮件地址。 |
QSsl::DnsEntry | 1 | DNS 主机名条目;该条目包含证书所适用的主机名。该条目可能包含通配符。 |
QSsl::IpAddressEntry | 2 | IP 地址条目;该条目包含证书所适用的 IP 地址条目,此功能在 Qt 5.13 中引入。 |
另请参阅 QSslCertificate::subjectAlternativeNames()。
enum QSsl::EncodingFormat
描述了证书和密钥支持的编码格式。
| 常量 | 值 | 描述 |
|---|---|---|
QSsl::Pem | 0 | PEM 格式。 |
QSsl::Der | 1 | DER 格式。 |
[since 6.1] enum class ImplementedClass
列举 TLS 后端所实现的类
在QtNetwork 中,某些类具有后端特有的实现,因此可以不进行实现。该枚举中的枚举项指示了后端中哪些类具有可正常工作的实现。
| 常量 | 值 | 描述 |
|---|---|---|
QSslSocket::ImplementedClass::Key | 0 | 类QSslKey 。 |
QSslSocket::ImplementedClass::Certificate | 1 | 类QSslCertificate 。 |
QSslSocket::ImplementedClass::Socket | 2 | QSslSocket 类。 |
QSslSocket::ImplementedClass::DiffieHellman | 3 | QSslDiffieHellmanParameters 类。 |
QSslSocket::ImplementedClass::EllipticCurve | 4 | QSslEllipticCurve 类。 |
QSslSocket::ImplementedClass::Dtls | 5 | QDtls 类。 |
QSslSocket::ImplementedClass::DtlsCookie | 6 | 类QDtlsClientVerifier 。 |
该枚举在 Qt 6.1 中引入。
enum QSsl::KeyAlgorithm
描述了QSslKey 支持的各种密钥算法。
| 常量 | 值 | 描述 |
|---|---|---|
QSsl::MlDsa | 5 | ML-DSA 算法。 |
QSsl::Rsa | 1 | RSA 算法。 |
QSsl::Dsa | 2 | DSA 算法。 |
QSsl::Ec | 3 | 椭圆曲线算法。 |
QSsl::Dh | 4 | 迪菲-赫尔曼算法。 |
QSsl::Opaque | 0 | QSslKey 应将该密钥视为“黑盒”。 |
不透明密钥功能允许应用程序为 PKCS#11 等功能添加支持,而 Qt 目前尚未原生提供这些功能。
enum QSsl::KeyType
描述了QSslKey 支持的两种密钥类型。
| 常量 | 值 | 描述 |
|---|---|---|
QSsl::PrivateKey | 0 | 私钥。 |
QSsl::PublicKey | 1 | 公钥。 |
enum QSsl::SslOption
flags QSsl::SslOptions
描述了可用于控制 SSL 行为细节的选项。这些选项通常用于禁用某些功能,以绕过存在缺陷的服务器。
| 常量 | 值 | 描述 |
|---|---|---|
QSsl::SslOptionDisableEmptyFragments | 0x01 | 在使用分组密码时,禁用将空片段插入数据中的操作。启用此选项可防止某些攻击(例如 BEAST 攻击),但与某些服务器不兼容。 |
QSsl::SslOptionDisableSessionTickets | 0x02 | 禁用 SSL 会话票证扩展。这可能会导致连接建立速度变慢,但某些服务器不支持该扩展。 |
QSsl::SslOptionDisableCompression | 0x04 | 禁用 SSL 压缩扩展。启用后,可通过 SSL 传输的数据将被压缩,但部分服务器不支持此扩展。 |
QSsl::SslOptionDisableServerNameIndication | 0x08 | 禁用 SSL 服务器名称指示扩展。启用后,该选项会告知服务器正在访问的虚拟主机,使其能够返回正确的证书。 |
QSsl::SslOptionDisableLegacyRenegotiation | 0x10 | 禁用用于重新协商连接参数的旧式不安全机制。启用此选项可允许连接到旧版服务器,但会增加攻击者向 SSL 会话中注入明文的风险。 |
QSsl::SslOptionDisableSessionSharing | 0x20 | 禁用通过会话 ID 握手属性实现的 SSL 会话共享。 |
QSsl::SslOptionDisableSessionPersistence | 0x40 | 禁用以 ASN.1 格式存储 SSL 会话(如QSslConfiguration::sessionTicket() 所返回)。启用此功能会增加内存开销,每个使用的会话票据约占用 1K 内存。 |
QSsl::SslOptionDisableServerCipherPreference | 0x80 | 禁用根据服务器偏好(而非客户端发送加密套件的顺序)选择加密套件的功能。此选项仅适用于服务器套接字,且仅由 OpenSSL 后端支持。 |
默认情况下,SslOptionDisableEmptyFragments 处于启用状态,因为这会导致与大量服务器出现兼容性问题。SslOptionDisableLegacyRenegotiation 也处于启用状态,因为它会引入安全风险。 已启用 SslOptionDisableCompression 以防范 CRIME 披露的攻击。已启用 SslOptionDisableSessionPersistence 以优化内存使用。其余选项均已禁用。
注意: 上述选项的可用性 取决于所使用的 SSL 后端版本。
SslOptions 类型是QFlags<SslOption> 的 typedef 定义。它存储 SslOption 值的按“或”运算组合。
enum QSsl::SslProtocol
描述该密码的协议。
| 常量 | 值 | 描述 |
|---|---|---|
QSsl::TlsV1_0 | 0 | TLSv1.0 |
QSsl::TlsV1_0OrLater | 5 | TLSv1.0 及更高版本。 |
QSsl::TlsV1_1 | 1 | TLSv1.1。 |
QSsl::TlsV1_1OrLater | 6 | TLSv1.1 及更高版本。 |
QSsl::TlsV1_2 | 2 | TLSv1.2。 |
QSsl::TlsV1_2OrLater | 7 | TLSv1.2 及更高版本。 |
QSsl::DtlsV1_0 | 8 | DTLSv1.0 |
QSsl::DtlsV1_0OrLater | 9 | DTLSv1.0 及更高版本。 |
QSsl::DtlsV1_2 | 10 | DTLSv1.2 |
QSsl::DtlsV1_2OrLater | 11 | DTLSv1.2 及更高版本。 |
QSsl::TlsV1_3 (since Qt 5.12) | 12 | TLSv1.3。 |
QSsl::TlsV1_3OrLater (since Qt 5.12) | 13 | TLSv1.3 及更高版本。 |
QSsl::UnknownProtocol | -1 | 无法确定该加密算法的协议。 |
QSsl::AnyProtocol | 3 | 任何受支持的协议。此值仅由QSslSocket 使用。 |
QSsl::SecureProtocols | 4 | 默认选项,使用已知安全的协议。 |
[since 6.1] enum class SupportedFeature
列举 TLS 后端可能支持的功能
在QtNetwork 中,TLS相关类具有公共API,某些后端可能未实现这些API,例如,我们的SecureTransport后端不支持服务器端ALPN。SupportedFeature枚举中的枚举项表示特定功能是否受支持。
| 常量 | 值 | 描述 |
|---|---|---|
QSslSocket::SupportedFeature::CertificateVerification | 0 | 表示后端实现了QSslCertificate::verify() 方法。 |
QSslSocket::SupportedFeature::ClientSideAlpn | 1 | 客户端 ALPN(应用层协议协商)。 |
QSslSocket::SupportedFeature::ServerSideAlpn | 2 | 服务器端 ALPN。 |
QSslSocket::SupportedFeature::Ocsp | 3 | OCSP 钉合(在线证书状态协议)。 |
QSslSocket::SupportedFeature::Psk | 4 | 预共享密钥。 |
QSslSocket::SupportedFeature::SessionTicket | 5 | 会话票证。 |
QSslSocket::SupportedFeature::Alerts | 6 | 关于已发送和已接收警报消息的信息。 |
该枚举在 Qt 6.1 中引入。
© 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.