IntraWeb中的SSL问题 - Delphi 2007

4
我已经尝试让我的IW程序工作了一段时间,但我一直遇到“无法加载SSL库”的问题。我遵循了我能找到的所有建议,但仍然没有成功。我尝试了建议中的DLL文件,无论是在本地目录还是system32目录下。
有没有人对我应该使用哪些OpenSSL DLL文件有一个明确的答案?以及它们的构建版本?或者其他任何想法?
Indy:昨天更新到最新的快照 IntraWeb:安装了股票D2007
这在Vista机器上运行,如果有任何区别的话。
谢谢! Trevor

不知道我能否问一下如何为Intraweb安装SSL?我在互联网上搜索了很多,但没有找到好的Intraweb资料。所以我能引起你对此的关注吗? - Munkhdelger Tumenbayar
4个回答

3

已解决:

看起来问题是由于我的机器上有一个bpl文件引起的。

以下是我采取的步骤,以防其他人在使用D2007和预安装库时无法运行独立服务器:

  1. 删除您机器上所有Indy的痕迹 - Indy网站上有一个如何操作的指南;
  2. 从subversion存储库下载Indy 10 trunk版本;
  3. 按照说明安装Indy;
  4. 从atozed下载最新的IW9 - 您需要一个密钥;
  5. 安装它 - 让它覆盖您当前的安装;

现在,关于OpenSSL DLLs:

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

到此为止,我能够编译和运行演示和我的应用程序。

感谢所有的帮助。

Trevor


2

您需要 OpenSSL dlls(对我来说,版本 0.9.8i 可用,但我没有使用 Vista),您可以在此处下载获取(正如您所建议的那样,Indy dlls 与 IW9 不兼容,这是捆绑在 D2007 中的版本)。

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

如果仍然无法工作:

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

希望这能有所帮助。

编辑:完成后,您将想要将 sslversion 更改为 sslv3,并让用户关闭 v2。


1
今天在 Embarcadero 论坛的同一问题中,Chad Z. "Kudzu" Hower 在回复中发布了 this link(没有任何解释 - 只有链接)。
该页面提供了 this link 到 SSL 库的特殊版本。
希望这可以帮到你。

好的,谢谢。我今天下午会试着操作一下。 - Trevor Oke

0

我是建立上述特殊版本的IntraWeb SSL dlls的人。为了完整回答上面的问题,让我解释一下为什么需要特殊版本:

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

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

自从我们使用Delphi 2009的Indy版本以来,就不再需要进行这些更改了。这就是为什么当前的Indy版本 - 即使是Delphi 2007的SVN版本 - 与slproweb的dlls一起使用也可以正常工作(这些dlls不包括这些修改)。

但请注意,slproweb的dlls需要MS VC++运行时dlls

为了避免这个问题,我经常为Indy创建自己的dlls:

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一起使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接