【问题标题】:How to BUILD OpenSSL for Indy [duplicate]如何为 Indy 构建 OpenSSL [重复]
【发布时间】:2013-12-03 07:07:16
【问题描述】:

如何构建 OpenSSL,以便我可以静态链接它们以用于 Windows 32/64 平台的 Indy 10.6?是否有深度指南可以在没有任何 VC++ 依赖的情况下进行编译?我听说 Indy 需要自定义 OpenSSL 代码而不是官方代码。还要使用什么编译器? VS2010、VS11、VS13?

如果它像 iOS 那样带有 .lib 文件,那就太好了。

【问题讨论】:

    标签: delphi openssl indy delphi-xe4 indy10


    【解决方案1】:

    Indy 几年前就停止使用定制的 OpenSSL DLL,从那以后一直在使用官方 DLL。

    但是,Indy 目前不支持在非 iOS 平台上静态链接 OpenSSL(有一个 TODO 项,但不要指望它会很快实现,除非其他人这样做并提交包含在 Indy 中的更改)。即使您可以在 Windows 上为 OpenSSL 编译静态 .obj 文件,它仍然需要在 Indy 的源代码中进行一些代码更改才能使用这些文件。您必须手动进行这些更改(请参阅此讨论:How to statically link Indy SSL files),直到将来某个时间在 Indy 本地进行。

    Indy 在 iOS 上静态支持 OpenSSL 的唯一原因是 Apple 不允许在 iOS 设备上动态使用 OpenSSL(不过,它在 iOS 模拟器中可以)。其他所有平台都允许动态加载 OpenSSL,这就是 OpenSSL 的主要使用方式。

    【讨论】:

    • Eldos 有一个解决方案。但它的价格为 1500 美元。那么为什么 Windows 被排除在外,而 iOS 却没有呢?由于 dll 挂钩攻击,拥有 dll 的安全性较低。在这里您没有提到它无法完成。 link
    • 再一次,Apple 要求 OpenSSL(以及任何其他第三方库,就此而言)静态编译到 iOS 应用程序中,没有动态使用外部库的选项.这就是 Indy 在 iOS 上支持静态版本的 OpenSSL 的唯一原因。没有其他平台(包括 iOS 模拟器)有这个限制,因此以前从未需要在任何平台上静态支持 OpenSSL。
    • 至于其中提到的other discussion、#2 和#4(编辑IdCompilerDefines.incIdSSLOpenSSLHeaders_static.pas 以识别Windows 上的OpenSSL 静态库)尚未在Indy 中原生实现。但是当我说这需要在 Indy 的源代码中进行代码更改时,我确实提到了这一点。
    • 是的,我们知道 HeartBleed 如何影响 OpenSSL。 Indy 实施是不安全的,期间!
    • Heartbleed 与 Indy 无关,它是 OpenSSL 本身的一个错误。您所要做的就是使用基于 Indy 的应用程序部署最新的 OpenSSL DLL,而 Heartbeat 将不再是一个因素。无需更改代码,无需重新编译(iOS 应用除外)。
    猜你喜欢
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2021-03-31
    • 2019-10-20
    • 2016-12-29
    • 2021-10-30
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多