安全套接字层(SSL)类

用于通过网络套接字进行安全通信的类。

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

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

Qt 版本 5.15.1 及以上也与 OpenSSL 3 兼容。

PySide6.QtNetwork.QDtlsClientVerifier

该类实现了服务器端DTLS cookie的生成和验证。

QDtlsClientVerifier.GeneratorParameters

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

QDtls.QDtlsError

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

PySide6.QtNetwork.QDtls

该类为UDP套接字提供加密。

QDtls.HandshakeState

描述DTLS握手的当前状态。

PySide6.QtNetwork.QOcspResponse

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

QOcspResponse.QOcspCertificateStatus

描述在线证书状态

QOcspResponse.QOcspRevocationReason

描述撤销的原因

qssl.html

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

QSsl.AlertLevel

描述警报消息的级别

QSsl.AlertType

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

QSsl.ImplementedClass

枚举TLS后端实现的类

QSsl.SupportedFeature

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

PySide6.QtNetwork.QSslCertificate

QSslCertificate 类为 X509 证书提供了一个方便的 API。

PySide6.QtNetwork.QSslCertificateExtension

QSslCertificateExtension 类提供了一个用于访问 X509 证书扩展的 API。

PySide6.QtNetwork.QSslCipher

QSslCipher 类表示一个 SSL 加密密码。

PySide6.QtNetwork.QSslConfiguration

QSslConfiguration 类保存 SSL 连接的配置和状态。

PySide6.QtNetwork.QSslDiffieHellmanParameters

QSslDiffieHellmanParameters 类为服务器提供了 Diffie-Hellman 参数的接口。

PySide6.QtNetwork.QSslEllipticCurve

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

PySide6.QtNetwork.QSslError

QSslError 类提供了一个 SSL 错误。

PySide6.QtNetwork.QSslKey

QSslKey 类提供了用于私钥和公钥的接口。

PySide6.QtNetwork.QSslPreSharedKeyAuthenticator

QSslPreSharedKeyAuthenticator 类为预共享密钥(PSK)加密套件提供认证数据。

PySide6.QtNetwork.QSslServer

实现了一个通过TLS加密的安全TCP服务器。

PySide6.QtNetwork.QSslSocket

QSslSocket 类为客户端和服务器提供了一个 SSL 加密的套接字。

对于Android应用程序,请参阅为Android添加OpenSSL支持。

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

从源代码构建Qt时,Qt会为所构建的操作系统支持的原生TLS库构建插件。对于Windows,这意味着Schannel,而对于macOS,则是Secure Transport

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

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

在构建链接到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允许使用RFC 6347定义的用户数据报协议(UDP)来使用DTLS。

进出口限制

Qt 二进制安装程序包含了 QtNetwork 使用的 OpenSSL 库。然而,这些库并不会自动随使用 Qt 构建的应用程序一起部署。某些类型的软件以及世界某些地区适用进出口限制。希望在其部署的应用程序中使用 SSL 通信的开发人员应确保其用户已安装适当的库,或者应咨询具有适当资格的法律专业人士,以确保使用 OpenSSL 项目代码的应用程序在相关地区正确获得进出口认证。