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 { 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::Rsa | 1 | RSA 算法。 |
QSsl::Dsa | 2 | DSA 算法。 |
QSsl::Ec | 3 | 椭圆曲线算法。 |
QSsl::Dh | 4 | Diffie-Hellman 算法。 |
QSsl::Opaque | 0 | QSslKey 应将密钥视为 "黑盒"。 |
不透明密钥设施允许应用程序添加对 Qt 目前尚未提供的 PKCS#11 等设施的支持。
enum QSsl::KeyType
描述了QSslKey 支持的两种密钥类型。
常量 | 值 | 描述 |
---|---|---|
QSsl::PrivateKey | 0 | 私人密钥。 |
QSsl::PublicKey | 1 | 公钥。 |
枚举 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 | 禁用以QSslConfiguration::sessionTicket() 返回的 ASN.1 格式存储 SSL 会话。启用此功能会增加内存开销,每个已使用的会话票据约为 1K。 |
QSsl::SslOptionDisableServerCipherPreference | 0x80 | 禁止根据服务器的偏好选择密码,而不是根据客户端发送密码的顺序。该选项仅适用于服务器套接字,且仅由 OpenSSL 后端执行。 |
默认情况下,SslOptionDisableEmptyFragments(禁用空字段)选项处于开启状态,因为这会导致大量服务器出现问题。SslOptionDisableLegacyRenegotiation(禁用传统重新协商)也已开启,因为它会带来安全风险。开启 SslOptionDisableCompression 是为了防止 CRIME 公开的攻击。开启 SslOptionDisableSessionPersistence 是为了优化内存使用。其他选项关闭。
注: 上述选项的可用性取决于所使用的 SSL 后端版本。
SslOptions 类型是QFlags<SslOption> 的类型定义。它存储 SslOption 值的 OR 组合。
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 相关类具有公共应用程序接口,但某些后端可能无法实现这些应用程序接口,例如,我们的 SecureTransport 后端不支持服务器端 ALPN。SupportedFeature 枚举中的枚举器表示支持特定功能。
常量 | 值 | 说明 |
---|---|---|
QSslSocket::SupportedFeature::CertificateVerification | 0 | 表示QSslCertificate::verify() 由后端实现。 |
QSslSocket::SupportedFeature::ClientSideAlpn | 1 | 客户端 ALPN(应用层协议协商)。 |
QSslSocket::SupportedFeature::ServerSideAlpn | 2 | 服务器端 ALPN。 |
QSslSocket::SupportedFeature::Ocsp | 3 | OCSP stapling(在线证书状态协议)。 |
QSslSocket::SupportedFeature::Psk | 4 | 预共享密钥。 |
QSslSocket::SupportedFeature::SessionTicket | 5 | 会话票据 |
QSslSocket::SupportedFeature::Alerts | 6 | 发送和接收的警报信息。 |
该枚举在 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.