sgcCustomIndy TLS 1.3。 通过 ALPN 支持 HTTP/2。 无需卸载任何东西。

标准 Indy 库不支持 ALPN,也不支持通过 OpenSSL 1.1.1 或 3.x 使用 TLS 1.3。sgcWebSockets Enterprise 自带一个支持这些功能的自定义 Indy 版本。sgcCustomIndy 将同一个版本带给 sgcWebSockets Core,并与您 IDE 中已有的 Indy 并存安装。

  • ALPN 和 HTTP/2
  • TLS 1.3
  • OpenSSL 1.1.1 和 3.x
  • 静态 OpenSSL
  • Delphi 7 至 13
  • C++ Builder
标准 INDY IdGlobal.pas IdTCPClient.pas IdSSLOpenSSL.pas 已在您的 IDE 中,保持安装 自定义 INDY sgcIdGlobal.pas sgcIdTCPClient.pas sgcIdSSLOpenSSL.pas 由扩展包添加,名称不冲突 带 ALPN 的 TLS 1.3 握手 客户端 服务器 ClientHello, ALPN [h2, http/1.1] ServerHello, ALPN h2 一个连接上的 HTTP/2 流
  • 0个 Indy 库需要卸载
  • 0次在 Delphi 7 上安装 Indy 10
  • 3项标准 Indy 所缺少的能力
  • 1个单元即可静态链接 OpenSSL
  • 2个静态链接目标:Windows 32 位和 64 位
它能解锁什么

标准 Indy 库做不到的三件事。

下列每一项都是 Indy 层本身的能力,而不是位于其上的某个组件的能力。这就是为什么只需替换 Indy 库即可启用它们。

CLIENTHELLO ALPN 提供 h2 http/1.1 服务器选择 h2 stream 1 stream 3 stream 5 HTTP/2 流 在 TLS 握手内部协商,位于任何 HTTP 组件之下。
ALPN

HTTP/2 所依赖的扩展。

  • 在 TLS 握手期间,客户端声明自己支持的协议,服务器从中选择一个。
  • 这一协商发生在 TLS 层内部,任何 HTTP 组件都无法触及。
  • 标准 Indy 库不支持它。自定义 Indy 库使 ALPN 以及依赖它的 HTTP/2 成为可能。
标准 INDY TLS 1.3 受限于较旧的 OpenSSL API 自定义 INDY TLS 1.3 OpenSSL 1.1.1 OpenSSL 3.x 客户端和服务器可以访问要求 TLS 1.3 的端点。
TLS 1.3、OpenSSL 1.1.1 和 3.x

现代 OpenSSL 分支,终于可以使用了。

  • TLS 1.3 需要 OpenSSL 1.1.1 或 OpenSSL 3.0.0,而标准 Indy 库不支持这些分支。
  • 自定义 Indy 库支持,因此基于它构建的客户端或服务器可以与要求 TLS 1.3 的端点协商 TLS 1.3。
  • 不再受限于较旧 OpenSSL API 所能提供的功能。
需部署三个文件 app.exe libssl libcrypto 只需部署一个文件 app.exe OpenSSL 已链入 uses sgcIdSSLOpenSSL_Static; Windows 32 位和 64 位,Delphi XE2 或更高版本。
静态 OpenSSL

OpenSSL 内置于可执行文件中。

  • OpenSSL 直接链接进您的应用,而不是在运行时从 libcrypto 和 libssl DLL 加载。
  • TLS 应用只需部署一个文件,客户端和服务器组件均适用。
  • 仅在使用自定义 Indy 库时生效,适用于 Windows 32 位和 64 位以及 Delphi XE2 或更高版本。
并存

它与您已有的 Indy 并存。

替换 IDE 中的 Indy 库是没人愿意做的事,所以这个扩展包不要求您这样做。自定义 Indy 文件带有 sgc 前缀,IdGlobal 变为 sgcIdGlobal,两个版本可以毫无问题地并存。

无需卸载任何东西

您的 IDE 中已有的 Indy 保持安装并保持注册。不需要移除某个包、事后再恢复,也不需要保留两套 IDE 配置。

现有项目不受影响

凡是已基于标准 Indy 库构建的内容,都继续针对它编译,所用单元逐字节相同。自定义版本是额外的,而不是替代品。

一个编译器定义

是否使用自定义 Indy 库由 sgcVer.inc 中的 SGC_CUSTOM_INDY 控制。再次关闭自定义版本只需改一行。

一如既往,完整源代码

重命名后的 Indy 单元随许可证以源代码形式提供,因此会按您的项目设置编译,并像库的其余部分一样可在调试器中单步调试。

Delphi 7 无需安装 Indy 10

Delphi 7 自带较旧的 Indy。由于已捆绑自定义 Indy 库,无需再去寻找 Indy 10、将其安装到 IDE,或使其与组件保持匹配。

Enterprise 所使用的版本

自定义 Indy 库并不是新东西。sgcWebSockets Enterprise 一直基于它构建,而这个扩展包就是 sgcWebSockets Core 获得它的途径。

代码

一个单元,一个文件部署。

无需任何配置。将 sgcIdSSLOpenSSL_Static 添加到 uses 子句中,例如添加到主 .dpr,应用下次运行时就会使用链入可执行文件的 OpenSSL。

Project1.dpr

uses
  sgcIdSSLOpenSSL_Static;

// That is the whole configuration. No compiler
// directive to enable, no OpenSSL API version to
// choose. Remove the unit again and the application
// goes back to loading the OpenSSL DLLs.

sgcVer.inc,位于源代码文件夹中

{$DEFINE SGC_CUSTOM_INDY}

// One define controls the custom Indy library.
// Static OpenSSL linking has no effect without it,
// and turning the custom build off again is a
// one line change.

在不支持静态链接的版本或平台上,不会出现任何问题。应用会像以前一样继续加载 OpenSSL DLL,因此同一份源代码可以在各处构建。静态链接的适用范围

平台

可以链接这种格式目标文件的平台。

  • Windows 32 位
  • Windows 64 位

编译器

较旧的版本会报告目标文件格式错误,因此静态链接从 Delphi XE2 开始。

  • Delphi XE2 及更高版本

前提条件

如果没有使用自定义 Indy 库,静态链接不会生效。

  • 已定义 SGC_CUSTOM_INDY
sgcWebSockets 的一部分

是附加组件,而不是单独订购。

sgcCustomIndy 附加在 sgcWebSockets Core 许可证上。它是 Core 订单中的第一个推荐附加组件,因此您在订购 sgcAI、sgcMQ 或 sgcSocial 时只需点一下即可添加,并在同一个许可证中交付。

Core 加 sgcCustomIndy

与 Enterprise 使用的自定义版本相同,在订购 Core 时添加。包含完整源代码和 1 年更新。

€149 / 每位开发者

sgcAuth 和 sgcHTTP 已包含

sgcAuth 中的 WebAuthn 支持和 sgcHTTP 中的 HTTP/2 与 gRPC 客户端都需要它,因此订购其中任何一个扩展包都始终包含 sgcCustomIndy。扩展包的标价已涵盖其费用。

Enterprise 和 All-Access 已包含

自定义 Indy 库是 sgcWebSockets Enterprise 和 eSeGeCe All-Access 的一部分,默认启用。如果您拥有其中任何一个,则无需再添加。Standard 和 Professional 使用标准 Indy 库。

它与 sgcIndy 不同,后者是用来替换 IDE 中 Indy 的完整 Indy 包。您需要哪个版本

查看价格

让 Indy 层与时俱进。

ALPN 和 HTTP/2,基于 OpenSSL 1.1.1 和 3.x 的 TLS 1.3,以及 Windows 上内置于可执行文件的 OpenSSL。全部与您已有的 Indy 并存。sgcWebSockets 试用版包含完整的 Enterprise 功能集,其中包括自定义 Indy。

博客最新动态

查看全部文章 →

您正在查看 eSeGeCe 的 sgcCustomIndy 视角。

换个角度看看 →
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策