原生 Apple TLS 后端

原生 Apple TLS(iohAppleTLS)是 sgcWebSockets 面向 iOS 和 macOS 的 TLS 传输,无需部署 OpenSSL .dylib。它为设备自动选择最佳的系统 API,因此你无需更改任何代码即可在现代系统上获得 TLS 1.3。通过将 TLSOptions.IOHandler 设置为 iohAppleTLS 来启用它。

← 所有 TLS 后端

原生 Apple TLS (iohAppleTLS)

面向 iOS 和 macOS 的 Apple 原生 TLS,无需部署 OpenSSL .dylib。

原生 Apple TLS 让你的 iOS 和 macOS 应用使用操作系统自带的 TLS,因此没有 OpenSSL .dylib 需要打包、版本匹配或打补丁。Apple 维护 TLS 栈,这使你的应用与平台的安全策略保持一致,并从你的发布中移除了一个第三方依赖。

该后端为每个设备自动选择最佳的系统 API,全部隐藏在单个 iohAppleTLS 设置之后。在 macOS 10.14+ 和 iOS 12+ 上,它使用 Network.framework,从而带来 TLS 1.3。在较旧系统上,它回退到 Secure Transport,最高支持到 TLS 1.2。你无需根据操作系统版本进行分支,后端会选择正确的路径,你的代码保持不变。

它是一个完整的 TLS 客户端,而非精简版。它使用系统信任存储,执行 SNI 和主机名验证,并暴露一个 OnAppleTLSVerifyPeer 回调用于自定义验证。你可以使用自定义 CA 根证书(RootCertFile)信任私有机构,提供客户端证书以进行双向 TLS(CertFile + Password),并通过 ALPN 通告诸如 http/1.1 之类的应用协议。如果你的 App Store 应用想要由操作系统维护的 TLS 1.3 且无需管理第三方加密,请选择此后端。

启用原生 Apple TLS

将 TLSOptions.IOHandler 设置为 iohAppleTLS,然后像使用任何其他后端一样使用相同的 TLSOptions。

WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohAppleTLS;
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.TLSOptions.RootCertFile := '';   // optional custom CA (PEM/DER)
WSClient.TLSOptions.CertFile := '';       // optional client cert (PKCS#12) for mTLS
WSClient.TLSOptions.Password := '';       // client cert password
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.OnAppleTLSVerifyPeer := DoVerifyPeer;  // optional custom validation
WSClient.Host := 'your.server.com';
WSClient.Port := 443;
WSClient.Active := True;
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohAppleTLS;
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->TLSOptions->RootCertFile = "";   // optional custom CA (PEM/DER)
WSClient->TLSOptions->CertFile = "";       // optional client cert (PKCS#12) for mTLS
WSClient->TLSOptions->Password = "";       // client cert password
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->OnAppleTLSVerifyPeer = DoVerifyPeer;  // optional custom validation
WSClient->Host = "your.server.com";
WSClient->Port = 443;
WSClient->Active = true;

无需 OpenSSL .dylib

TLS 栈随操作系统一起提供,后端为每个设备选择正确的 API。

Network.framework

在 macOS 10.14+ 和 iOS 12+ 上,后端使用 Network.framework,从而带来 TLS 1.3。

Secure Transport 回退

在较旧系统上,它自动回退到 Secure Transport(TLS 1.2),且隐藏在相同的设置之后。

系统信任和 SNI

它使用系统信任存储,支持 SNI 和主机名验证,并提供 OnAppleTLSVerifyPeer 用于自定义检查。

自定义 CA 和 mTLS

使用 RootCertFile 信任私有 CA,使用 CertFile + Password 提供客户端证书,并通告 ALPN 协议。

版本说明

原生 Apple TLS(iohAppleTLS)需要 sgcWebSockets 的 Enterprise 版本。完整细分请参见功能矩阵

原生 Apple TLS 1.3,零 OpenSSL

下载免费试用版,发布无需部署任何 OpenSSL .dylib 的 iOS 和 macOS 应用。