安全套接字层(SSL)类别

以下类提供了使用安全套接字层(SSL)协议对安全网络通信的支持,使用本机TLS后端,OpenSSL工具包(OpenSSL Toolkit),或任何适当的TLS插件进行加密和协议处理。

从Qt 5.15版本开始,官方支持的OpenSSL版本是1.1.1或更高版本。

从Qt 5.15.1版本开始,也兼容OpenSSL 3。

QDtls

此类为UDP套接字提供加密

QDtlsClientVerifier

此类实现服务器端DTLS cookie的生成和验证

QDtlsClientVerifier::GeneratorParameters

此类定义了DTLS cookie生成器的参数

QOcspResponse

此类表示在线证书状态协议响应

QSsl

声明了Qt网络中所有SSL类共有的枚举

QSslCertificate

提供方便的API以处理X509证书

QSslCertificateExtension

用于访问X509证书扩展的API

QSslCipher

表示SSL密钥加密算法

QSslConfiguration

包含SSL连接的配置和状态

QSslDiffieHellmanParameters

为服务器提供Diffie-Hellman参数的接口

QSslEllipticCurve

表示用于椭圆曲线密码算法的椭圆曲线

QSslError

SSL错误

QSslKey

用于私有和公共键的接口

QSslPreSharedKeyAuthenticator

为预共享密钥(PSK)加密套件提供身份验证数据

QSslServer

在TLS上实现加密的安全TCP服务器

QSslSocket

SSL加密套接字,适用于客户端和服务器

QSslSocket::AlertLevel

描述警报消息的级别

QSslSocket::AlertType

列出警报消息可能有的可能的代码

QDtls::HandshakeState

描述DTLS握手当前的状态

QSslSocket::ImplementedClass

列出TLS后端实现的类

QDtls::QDtlsError

描述QDtls和QDtlsClientVerifier可能发现的错误

QOcspResponse::QOcspCertificateStatus

描述在线证书状态

QOcspResponse::QOcspRevocationReason

描述吊销的原因

QSslSocket::SupportedFeature

列出TLS后端支持的可能的特性

有关Android应用程序的信息,请参阅为Android添加OpenSSL支持

在从源码构建Qt时启用和禁用SSL支持

在从源码构建Qt时,Qt为您构建的后端TLS库编译插件。对于Windows这意味着Schannel,而对于macOS则是Secure Transport

在所有平台上,配置系统都会检查OpenSSL提供的头文件openssl/opensslv.h是否存在,该文件由源或开发包提供。如果找到,将启用并构建Qt的OpenSSL后端。

默认情况下,启用了OpenSSL的Qt库在运行时动态加载任何已安装的OpenSSL库。但是,可以通过使用带有-openssl-linked选项配置Qt,在编译时链接到该库。

当构建链接到OpenSSL的Qt版本时,Qt的构建系统将使用CMake的FindOpenSSL命令在几个标准位置查找OpenSSL。您可以将CMake变量OPENSSL_ROOT_DIR设置为一个强制指定的位置。

例如

configure -openssl-linked -- -D OPENSSL_ROOT_DIR=<openssl_dir>

要禁用Qt构建中的SSL支持,使用-no-openssl选项配置Qt。

打包您的应用程序时的注意事项

当您打包应用程序时,可能会运行像windeployqt这样的工具。这会将您使用的库的所有插件复制到plugins/文件夹中。然而,对于TLS,您只需要一个后端,在打包您的应用程序之前,您可以删除其他插件。例如,如果您在Windows上操作且不需要OpenSSL后端提供的任何额外功能,您可以选择不发送qopensslbackend插件以及OpenSSL库,而仅发送qschannelbackend插件。

但是,发送多个后端不会造成问题。Qt将尝试根据顺序加载后端(首先尝试OpenSSL),直到成功加载一个。其他后端将不再使用。

数据报传输层安全性

数据报传输层安全性(DTLS)是一种协议,它为基于数据报的提供安全支持,保护免遭偷听、篡改或消息伪造。DTLS协议基于面向流的传输层安全性(TLS)协议。《QtNetwork》模块使您能够使用用户数据报协议(UDP)使用DTLS,如RFC 6347所述。

导入和导出限制

Qt的二进制安装程序包括由QtNetwork使用的OpenSSL库。然而,这些并不自动与使用Qt构建的应用程序一起部署。对于某些类型的软件和某些地区,适用进口和出口限制。希望在其部署的应用程序中使用SSL通信的开发人员应确保其用户已安装适当的库,或者应咨询合格的律师,以确保使用OpenSSL项目代码的应用程序在相关世界地区正确进行进口和出口认证。

© 2024 Qt公司有限公司。本文件中所含文档贡献的版权归其各自的拥有者。提供的文档按照自由软件基金会发布的<码">GNU自由文档许可协议第1.3版的条款进行许可。Qt和相应的标志是芬兰的Qt公司及其在世界其他国家的商标。所有其他商标均为其各自所有者的财产。