QSsl 命名空间
QSsl 文件夹声明了适用于 Qt 网络中所有 SSL 类的枚举类型。 更多...
头文件 | #include <QSsl> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake | QT += network |
- QSsl 是 网络编程 API 的一部分。
类型
(自 6.0) 枚举类 | AlertLevel { 警告, 误报, 未知 } |
(自 6.0) 枚举类 | AlertType { CloseNotify, UnexpectedMessage, BadRecordMac, RecordOverflow, DecompressionFailure, …, UnknownAlertMessage } |
枚举 | AlternativeNameEntryType { EmailEntry, DnsEntry, IpAddressEntry } |
枚举 | EncodingFormat { Pem, Der } |
(自 6.1) 枚举类 | ImplementedClass { Key, Certificate, Socket, DiffieHellman, EllipticCurve, …, DtlsCookie } |
枚举 | KeyAlgorithm { Rsa, Dsa, Ec, Dh, Opaque } |
枚举 | KeyType { PrivateKey, PublicKey } |
枚举 | SslOption { SslOptionDisableEmptyFragments, SslOptionDisableSessionTickets, SslOptionDisableCompression, SslOptionDisableServerNameIndication, SslOptionDisableLegacyRenegotiation, …, SslOptionDisableServerCipherPreference } |
标志 | SslOptions |
枚举 | SslProtocol { TlsV1_0, TlsV1_0OrLater, TlsV1_1, TlsV1_1OrLater, TlsV1_2, …, SecureProtocols } |
(自 6.1) 枚举类 | SupportedFeature { CertificateVerification, ClientSideAlpn, ServerSideAlpn, Ocsp, Psk, …, Alerts } |
类型文档
[since 6.0]
枚举类 AlertLevel
描述警告消息的级别
此枚举描述了发送或接收到的警告消息的级别。
常量 | 值 | 描述 |
---|---|---|
QSslSocket::AlertLevel::Warning | 0 | 非致命性警告消息 |
QSslSocket::AlertLevel::Fatal | 1 | 致命警告消息,底层后端将正确处理此类警告并关闭连接。 |
QSslSocket::AlertLevel::Unknown | 2 | 严重级别未知的警告。 |
此枚举自 Qt 6.0 以来引入。
[since 6.0]
枚举类 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 以来引入。
枚举 QSsl::AlternativeNameEntryType
描述 QSslCertificate 中的替代名称条目的键类型。
常量 | 值 | 描述 |
---|---|---|
QSsl::EmailEntry | 0 | 电子邮件条目;条目包含证书有效的电子邮件地址。 |
QSsl::DnsEntry | 1 | DNS主机名条目;条目包含证书有效的域名。条目可能包含通配符。 |
QSsl::IpAddressEntry | 2 | IP地址条目;条目包含证书有效的IP地址,Qt 5.13中引入。 |
另请参阅QSslCertificate::subjectAlternativeNames。
枚举 QSsl::EncodingFormat
描述证书和密钥支持的编码格式。
常量 | 值 | 描述 |
---|---|---|
QSsl::Pem | 0 | PEM格式。 |
QSsl::Der | 1 | DER格式。 |
[自 6.1]
枚举类 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 中引入的。
枚举 QSsl::KeyAlgorithm
描述 QSslKey 支持的不同的密钥算法。
常量 | 值 | 描述 |
---|---|---|
QSsl::Rsa | 1 | RSA算法。 |
QSsl::Dsa | 2 | DSA算法。 |
QSsl::Ec | 3 | 椭圆曲线算法。 |
QSsl::Dh | 4 | Diffie-Hellman算法。 |
QSsl::Opaque | 0 | 一个应该被 QSslKey 当作 '黑盒' 处理的密钥。 |
透明密钥功能允许应用程序添加对 PowerShell#11 等功能的支持,Qt 并未提供原生的支持。
枚举 QSsl::KeyType
描述QSslKey支持的两种密钥类型。
常量 | 值 | 描述 |
---|---|---|
QSsl::PrivateKey | 0 | 私有密钥。 |
QSsl::PublicKey | 1 | 公钥。 |
枚举 QSsl::SslOption
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 | 禁用将SSL会话以ASN.1格式存储,如QSslConfiguration::sessionTicket()返回。启用此功能将增加每个使用的会话票据大约1K的内存开销。 |
QSsl::SslOptionDisableServerCipherPreference | 0x80 | 禁用根据服务器偏好而非客户端发送密钥顺序选择的密码。此选项仅适用于服务器套接字,并且仅由OpenSSL后端支持。 |
默认情况下,SslOptionDisableEmptyFragments被启用,因为这会导致大量服务器出现问题。SslOptionDisableLegacyRenegotiation也已启用,因为它引入了安全风险。SslOptionDisableCompression被启用以防止CRIME公布的攻击。SslOptionDisableSessionPersistence被启用以优化内存使用。其他选项被关闭。
注意:上述选项的可用性取决于所使用的SSL后端版本。
SslOptions类型是QFlags<SslOption>的类型别名。它存储一个OR组合的SslOption值。
枚举 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 | 12 | TLSv1.3。(自Qt 5.12起) |
QSsl::TlsV1_3OrLater | 13 | TLSv1.3及其后续版本。(自Qt 5.12起) |
QSsl::UnknownProtocol | -1 | 无法确定密码的协议。 |
QSsl::AnyProtocol | 3 | 任何受支持的协议。此值仅由QSslSocket使用。 |
QSsl::SecureProtocols | 4 | 默认选项,使用已知的加密协议。 |
[自 6.1 版起]
枚举类 SupportedFeature
枚举 TLS 后端支持的可能功能
在 QtNetwork 中,与 TLS 相关的类具有公共 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 stapling(在线证书状态协议)。 |
QSslSocket::SupportedFeature::Psk | 4 | 预共享密钥。 |
QSslSocket::SupportedFeature::SessionTicket | 5 | 会话票据。 |
QSslSocket::SupportedFeature::Alerts | 6 | 关于发送和接收的警告信息的说明。 |
此枚举是在 Qt 6.1 中引入的。
© 2024 The Qt Company Ltd。本文档中的文档贡献包括此处各自所有者的版权。提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 许可的。Qt 和相关标志是 The Qt Company Ltd. 在芬兰以及/或其他国家的商标。所有其他商标均为各自所有者的财产。