4

最近一段时间,我一直在尝试使用 SSL 在我的 IW 程序上工作,并且一直遇到“无法加载 SSL 库”。我已经听从了我能找到的关于这个主题的每一条建议,但仍然没有快乐。我已经在本地目录和 system32 中尝试了建议的 DLL。

有人对我应该使用什么 OpenSSL DLL 有明确的答案吗?它们的构造是什么?还是有其他想法?

Indy:昨天更新到最新快照 IntraWeb:已安装股票 D2007

这是在 Vista 机器上运行的,如果这有什么不同的话。

TIA,

特雷弗

4

4 回答 4

3

解决了:

看起来问题是我的机器上漂浮的 bpl。

以下是我采取的步骤,以防其他人难以让独立服务器与 D2007 和预安装的库一起运行:

  1. 从您的机器中删除所有 Indy 痕迹 - Indy 网站上的某处有一个操作指南;
  2. 从 subversion 存储库下载 Indy 10 主干
  3. 按照说明安装 Indy;
  4. 从 atozed 下载最新的 IW9 - 您需要一个密钥;
  5. 安装它——让它破坏你当前的安装;

现在,对于 OpenSSL DLL:

  1. 从这里获取它们:http ://www.slproweb.com/download/Win32OpenSSL_Light-0_9_8i.exe
    • 这些对我来说效果很好;
  2. 确保您的防火墙允许端口 443 通过(或您选择的任何内容);

此时,我能够编译并运行演示和我的应用程序。

感谢所有的帮助。

特雷弗

于 2008-10-24T22:40:00.387 回答
2

您需要 OpenSSL dll(0.9.8i 为我工作,但我没有使用 Vista),您可以在此处下载(正如我认为您所建议的那样,Indy dll 不适用于 IW9,这是该版本与 D2007 捆绑在一起)。

安装后,将 ssleay32.dll 和 libeay32.dll 从 system32 复制到您的应用程序目录。

如果它仍然不起作用:

  • 您的服务器控制器的 ssl 端口是否设置为 443?
  • 您的证书密码是否与您的服务器控制器的 ssl 证书密码匹配?
  • servercontroller.sslversion 是否设置为 sslv23?
  • 您是否尝试过为 SSL(独立)编译/运行 AtoZed 演示应用程序?

希望这可以帮助。

编辑:一旦你得到这个工作,你会想要将 sslversion 更改为 sslv3,并让用户关闭 v2。

于 2008-10-18T05:34:52.593 回答
1

在今天对 Embarcadero 新闻组内部论坛上的同一问题的回应中,Chad Z.“Kudzu”Hower 发布了这个链接(没有任何解释 - 只是链接)。

该页面提供了指向SSL 库的特殊构建的链接。

希望这可以帮助。

于 2008-10-22T04:02:05.587 回答
0

我是构建上述 IntraWeb SSL dll 的特殊版本的人。为了完成上面的答案,让我解释一下为什么需要特殊构建:

以前的 Indy 和 IntraWeb 版本使用稍微修改过的 OpenSSL 版本。修改包括与时区计算相关的几个功能,这些功能当时在 Delphi 或 Indy 中不可用。

因此,当有人将一组未修改的 OpenSSL dll(不是 Indy OpenSSL dll)与旧的 Indy 或 IntraWeb 版本一起使用时,由于缺少导出,他将收到“无法加载 SSL 库”错误。

由于我们在 Delphi 2009 中使用 Indy 版本,因此不再需要这些更改。这就是为什么当前的 Indy 版本——来自 SVN 甚至是 Delphi 2007——与 IntraWeb 一起也可以与来自 slproweb 的 dll 一起使用(不包括这些修改)。

但请注意,slproweb dll确实需要 MS VC++ 运行时 dll

为了避免这种情况,我经常为 Indy 创建一组自己的 dll:ftp: //ftp.fulgan.com/SSL/

截至今天,您应该可以使用此版本: ftp: //ftp.fulgan.com/SSL/openssl-1.0.0d-i386-win32-rev2.zip

我的 dll 集不需要安装 MC VC 运行时。

所以可以肯定地说,任何比 Delphi 2009 更新的 Indy 版本和/或相应的 SVN 版本都可以安全地与 slproweb(具有 VC 依赖项)或我们自己的(来自 fulgan 镜像)dll 一起使用。

于 2011-07-17T18:59:24.403 回答