SSL / TLS 后端

sgcWebSockets 在单个属性 TLSOptions.IOHandler 背后提供四种可互换的 TLS 传输。选择 OpenSSL 以获得最大的可移植性,或选择原生平台后端(Windows SChannel、Android、iOS/macOS),它使用操作系统自带的 TLS 栈,无需部署任何 OpenSSL 库。切换后端只需一行代码,其他一切都无需改动。

四种 TLS 传输,一个属性

每个后端都接入相同的 TLSOptions API。选择适合你平台和部署的那一个,然后设置 TLSOptions.IOHandler。

后端对比

每种传输的平台、部署占用、TLS 1.3 支持和版本。

后端 平台 需部署的库 TLS 1.3 版本
OpenSSL Windows、Linux、macOS、iOS、Android OpenSSL(libssl/libcrypto) 所有版本
SChannel Windows 无(内置于 Windows) (Windows 11/Server 2022+) Professional、Enterprise
Android TLS Android 无(使用操作系统) Enterprise
Apple TLS iOS、macOS 无(使用操作系统) (10.14+/iOS 12+) Enterprise

选择一个后端

每种传输都有自己的页面,包含完整的设置、Delphi 和 C++Builder 代码、部署说明和版本细节。

OpenSSL (iohOpenSSL)

基于 Indy socket 的跨平台 TLS,在 sgcWebSockets 面向的每个平台上都可用,并且在大多数平台上是默认选择。完整支持 TLS 1.0 至 1.3,最广泛的加密套件覆盖,自定义 CA、客户端证书和 ALPN。你需要随应用一起部署 OpenSSL 运行时库。包含在所有版本中。

阅读完整指南 →

SChannel (iohSChannel)

Microsoft 的原生 TLS 栈(Secure Channel / SSPI),内置于 Windows。无需部署任何库,没有 OpenSSL DLL 需要随附或打补丁,并且使用 Windows 证书存储。仅限 Windows。包含在 Professional 和 Enterprise 版本中。

阅读完整指南 →

原生 Android TLS (iohAndroidTLS)

通过 JNI 使用平台 SSLEngine 的 Android 原生 TLS。你的 APK 中不含 OpenSSL .so,针对 Android 系统信任存储进行验证,支持 TLS 1.3,并在 Android 10(API 29)及更高版本上支持 ALPN。Enterprise 版本。

阅读完整指南 →

原生 Apple TLS (iohAppleTLS)

面向 iOS 和 macOS 的 Apple 原生 TLS,无需部署 OpenSSL .dylib。在 macOS 10.14+ / iOS 12+ 上自动选用 Network.framework(TLS 1.3),在较旧系统上回退到 Secure Transport(TLS 1.2),支持系统信任、SNI、自定义 CA、客户端证书 / mTLS 和 ALPN。Enterprise 版本。

阅读完整指南 →

版本说明

原生平台 TLS,即 Android(iohAndroidTLS)和 Apple(iohAppleTLS),需要 Enterprise 版本。OpenSSL(iohOpenSSL)包含在所有版本中;SChannel(iohSChannel)包含在 Professional 和 Enterprise 版本中。

一行代码即可切换

四种后端共享相同的 TLSOptions API,因此在它们之间切换只需更改一个属性。你代码中的其他一切都无需改动。

TLS 和 VerifyCertificate

在每个后端上以相同方式启用 TLS 并切换对端证书验证。

RootCertFile

指向自定义 CA 根证书,以信任私有或自签名的证书颁发机构。

CertFile 和 Password

提供客户端证书及其密码,以进行双向 TLS(mTLS)身份验证。

ALPNProtocols

在 TLS 握手期间通告应用协议(例如 http/1.1)。

// Same TLSOptions, only the IOHandler line changes per platform.
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;   // or iohSChannel / iohAndroidTLS / iohAppleTLS
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.RootCertFile := '';
WSClient.TLSOptions.CertFile := '';
WSClient.TLSOptions.Password := '';
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.Active := True;
// Same TLSOptions, only the IOHandler line changes per platform.
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;   // or iohSChannel / iohAndroidTLS / iohAppleTLS
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->RootCertFile = "";
WSClient->TLSOptions->CertFile = "";
WSClient->TLSOptions->Password = "";
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->Active = true;

原生 TLS,无需部署任何 OpenSSL

下载免费试用版,只需一行代码即可切换 TLS 后端。