OpenSSL 1.1 与 Indy

· 功能

目前,Indy 仅支持 1.0.2 版本的 OpenSSL,多位客户咨询关于 OpenSSL 1.1 支持的问题。尽管 OpenSSL 1.0.2 目前仍可用(因为它支持作为标准协议版本的 TLS 1.2),但 OpenSSL 团队将在今年年底停止支持 1.0 API,这意味着不再发布更新和修复补丁,对 Indy 库来说这是个坏消息。

经过大量内部工作,我们已发布新版 sgcWebSockets 库,支持 OpenSSL 1.1 API

从 sgcWebSockets 4.3.2 起支持

目前有 2 个版本:

  1. 默认版本:与之前版本相同,需要在 IDE 中安装 Indy。
  2. Indy 版本:是自定义的 Indy 版本,支持 OpenSSL API 1.1,无需安装 Indy。Indy 文件已重命名,因此您可以在使用我们自定义 Indy 源代码编译 sgcWebSockets 的同时,维护您自己的 Indy 库。

要启用 OpenSSL 1.1,只需访问 OpenSSL_Options 并选择要使用的 API:oslAPI_1_0oslAPI_1_1。客户端示例:

oClient := TsgcWebSocketClient.Create(nil);
oClient.Host := '127.0.0.1';
oclient.Port := 443;
oClient.TLS := True;
oClient.TLSOptions.OpenSSL_Options.APIVersion := oslAPI_1_1;
oClient.Active := True; 

之后,您可以部署 OpenSSL 1.1 库,替换 Indy 默认使用的 OpenSSL 1.0.2。根据您的操作系统,可能需要或不需要部署 openSSL 库。

平台 API 1.0 API 1.1 静态/动态链接
Windows(32 位和 64 位) ​libeay32.dll and ssleay32.dll ​libcrypto-1_1.dll and libssl-1_1.dll 动态
​OSX​libcrypto.dylib, libssl.dylib​libcrypto.1.1.dylib, libssl.1.1.dylib动态
iOS 设备(32 位和 64 位)​libcrypto.a and libssl.a​libcrypto.a and libssl.a静态
iOS 模拟器​libcrypto.dylib, libssl.dylib​libcrypto.1.1.dylib, libssl.1.1.dylib动态
Android 设备​libcrypto.so, libssl.so​libcrypto.so, libssl.so动态