升级 Indy 库以使用最新的 OpenSSL 库
Upgrade Indy library to use latest OpenSSL library
升级用 Delphi 编写的 Indy 库以使用具有最新功能(例如 TLS v1.3)的最新 OpenSSL 库的过程是什么?
我发现的 Indy 库的最新版本使用 libssl32.dll 和 ssleay32.dll DLL。最新的 OpenSSL 库生成 libssl-1_1.dll 和 libcrypto-1_1.dll DLL。通过更改 Indy 库中的 DLL 名称,OpenSSL DLL 的动态加载失败,因为 Indy 中定义的许多函数与 OpenSSL DLL 的函数不匹配。因此 OpenSSL API 已更改。
据我了解Delphi Indy库的源文件IdSSL*.pas需要升级:
- IdSSL.pas
- IdSSLDotNET.pas
- IdSSLOpenSSL.pas
- IdSSLOpenSSLHeaders.pas
- IdSSLOpenSSLHeaders_static.pas
- IdSSLOpenSSLUtils.pas
如您所见,OpenSSL 1.1 还有另一个 API。目前,Indy 仅使用 1.0 调用,不使用 1.1 特定功能,如异步处理。让 Indy 切换到 Open SLL 1.1 将是一个很大的重构(参见下面的 Remy 评论)。
但 Indy 使用的 OpenSSL DLL 并未被弃用。 Fulgan Reference WebSite has currently e.g. openssl-1.0.2o-i386-win32.zip
which is the latest stable revision available on the branch, as stated by the official OpenSSL source code。您混淆了分支(1.0 vs 1.1 = API 更改)和修订版(1.0.2a vs 1.0.2o = 新修复)。
所以不用担心。如果您将 Indy 与 a proper Cypher Names list 和最新的 Fulgan DLL 一起使用,那么您就已经是最新的并且很安全了。有时比一些旧的 Linux 发行版更安全,它可能落后于系统附带的修订版。即使是 TLS 1.3 也远未成为强制性的,因为它尚未在客户端启用。我确信 Indy 团队会在 1.1 的某些功能成为强制性功能时支持它(或切换到 Windows SChannel API)。
由于 API OpenSSL 库与最新功能 1.1.x 和支持的 OpenSSL 库 1.0.x 之间不兼容,必须重新编写 Indy 代码。此类升级没有 simple/common 过程。
OpenSSL 1.1 几乎可以与最新版本的 Indy(主分支)一起使用。查看此 link 至 Indy github 页面:
https://github.com/IndySockets/Indy/pull/299
升级用 Delphi 编写的 Indy 库以使用具有最新功能(例如 TLS v1.3)的最新 OpenSSL 库的过程是什么?
我发现的 Indy 库的最新版本使用 libssl32.dll 和 ssleay32.dll DLL。最新的 OpenSSL 库生成 libssl-1_1.dll 和 libcrypto-1_1.dll DLL。通过更改 Indy 库中的 DLL 名称,OpenSSL DLL 的动态加载失败,因为 Indy 中定义的许多函数与 OpenSSL DLL 的函数不匹配。因此 OpenSSL API 已更改。
据我了解Delphi Indy库的源文件IdSSL*.pas需要升级:
- IdSSL.pas
- IdSSLDotNET.pas
- IdSSLOpenSSL.pas
- IdSSLOpenSSLHeaders.pas
- IdSSLOpenSSLHeaders_static.pas
- IdSSLOpenSSLUtils.pas
如您所见,OpenSSL 1.1 还有另一个 API。目前,Indy 仅使用 1.0 调用,不使用 1.1 特定功能,如异步处理。让 Indy 切换到 Open SLL 1.1 将是一个很大的重构(参见下面的 Remy 评论)。
但 Indy 使用的 OpenSSL DLL 并未被弃用。 Fulgan Reference WebSite has currently e.g. openssl-1.0.2o-i386-win32.zip
which is the latest stable revision available on the branch, as stated by the official OpenSSL source code。您混淆了分支(1.0 vs 1.1 = API 更改)和修订版(1.0.2a vs 1.0.2o = 新修复)。
所以不用担心。如果您将 Indy 与 a proper Cypher Names list 和最新的 Fulgan DLL 一起使用,那么您就已经是最新的并且很安全了。有时比一些旧的 Linux 发行版更安全,它可能落后于系统附带的修订版。即使是 TLS 1.3 也远未成为强制性的,因为它尚未在客户端启用。我确信 Indy 团队会在 1.1 的某些功能成为强制性功能时支持它(或切换到 Windows SChannel API)。
由于 API OpenSSL 库与最新功能 1.1.x 和支持的 OpenSSL 库 1.0.x 之间不兼容,必须重新编写 Indy 代码。此类升级没有 simple/common 过程。
OpenSSL 1.1 几乎可以与最新版本的 Indy(主分支)一起使用。查看此 link 至 Indy github 页面: https://github.com/IndySockets/Indy/pull/299