安全套接层 (SSL) 类
以下类通过安全套接层(SSL)协议,利用原生 TLS 后端、OpenSSL 工具包或任何合适的 TLS 插件来执行加密和协议处理,从而为安全的网络通信提供支持。
该类为 UDP 套接字提供加密功能 | |
该类实现了服务器端的 DTLS Cookie 生成和验证 | |
该类定义了 DTLS cookie 生成器的参数 | |
该类表示在线证书状态协议(OCSP)响应 | |
声明了所有 SSL 类共有的枚举类型Qt Network | |
用于 X509 证书的便捷 API | |
用于访问 X509 证书扩展的 API | |
表示一种 SSL 加密算法 | |
保存 SSL 连接的配置和状态 | |
用于服务器 Diffie-Hellman 参数的接口 | |
表示供椭圆曲线密码算法使用的椭圆曲线 | |
SSL 错误 | |
私钥和公钥的接口 | |
描述从 TLS 会话派生的导出密钥素材 | |
用于预共享密钥(PSK)密码套件的身份验证数据 | |
通过 TLS 实现加密且安全的 TCP 服务器 | |
适用于客户端和服务器端的SSL加密套接字 | |
描述警报消息的级别 | |
列举了警报消息可能包含的代码 | |
描述 DTLS 握手当前的状态 | |
枚举 TLS 后端所实现的类 | |
描述 QDtls 和 QDtlsClientVerifier 可能检测到的错误 | |
描述在线证书状态 | |
描述吊销的原因 | |
列举 TLS 后端可能支持的功能 |
关于 Android 应用程序,请参阅《为 Android 添加 OpenSSL 支持》。
在网络应用程序中使用加密
在任何网络上传输数据时,应尽可能使用加密。明文(即未加密且易于被读取的数据)会泄露敏感数据,例如用户信息和网络系统信息。
使用 `QSslSocket::connectToHostEncrypted()` 建立加密连接,并使用 `QSslSocket::sslHandshakeErrors()` 检查 SSL 问题。请谨慎使用 `QSslSocket::ignoreSslErrors()`,因为它会在您的应用程序中产生安全风险。
请使用QSslConfiguration 强制执行强安全设置。支持的协议取决于 SSL 后端,且协议的风险等级未来可能会发生变化。您可以使用QSslConfiguration::setProtocol() 采用更新且更安全的协议。有关详细信息,请参阅QSsl::SslProtocol 以了解可用协议。
从源代码构建 Qt 时启用和禁用 SSL 支持
从源代码构建 Qt 时,Qt 会为目标操作系统所支持的原生 TLS 库构建插件。对于 Windows 而言,这指的是Schannel;而对于 macOS 而言,则是Secure Transport。
在所有平台上,配置系统都会检查源代码或 OpenSSL 开发者包中是否包含openssl/opensslv.h 头文件。若找到该头文件,系统将启用并构建 Qt 的 OpenSSL 后端。
注意:虽然 从源代码构建的 Qt 仍可支持较旧的 OpenSSL 1.1.1 版本,但 Qt Online Installer 在运行时必须使用 OpenSSL 3。
默认情况下,启用 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。
进出口限制
某些类型的软件以及世界某些地区受进出口限制。 希望在已部署的应用程序中使用 SSL 通信的开发人员,应确保其用户已安装相应的库,或者咨询具备相应资质的法律专业人士,以确保使用 OpenSSL 项目代码的应用程序在世界相关地区已获得正确的进出口认证。
有关详细信息,请参阅《Qt 框架和工具的出口管制》。
© 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.