【问题标题】:Delphi (Rio) DataSnap server on Linux container, need which OpenSSL libraries?Linux 容器上的 Delphi (Rio) DataSnap 服务器,需要哪些 OpenSSL 库?
【发布时间】:2019-11-02 14:04:52
【问题描述】:

我有一个在 Docker 容器(ubuntu 18.04)中运行的 DataSnap 服务器,当尝试连接到它时,它返回“连接正常关闭”。加密过滤器已打开,我知道此消息通常意味着我忘记包含应用程序可以找到的 OpenSSL 库。我相当有信心缺少 OpenSSL 库是问题所在,因为我在没有加密过滤器的情况下编译了 DataSnap 服务器并且连接正常。

这不是我们的第一个 DataSnap 服务器应用程序,而是第一次在 Linux 环境中运行。我们习惯于将 libeay32.dll 和 ssleay32.dll 包含在与我们的 Windows 应用程序相同的文件夹中,但是我在这个 Linux / ubuntu 环境中提供类似库文件的尝试没有奏效。

查看这篇文章 (http://docwiki.embarcadero.com/RADStudio/Rio/en/OpenSSL) 并查看 Indy10 源代码 (IdSSLOpenSSLHeaders.pas),似乎所需的库文件是 libssl.so 和 libcrypto.so。还有一个 SSLDLLVers 常量字符串数组,用于尝试加载不同版本的库文件。

我认为 OpenSSL 已经在 ubuntu 18.04 中,但我还运行了“apt-get -y install openssl”命令来确保。我已将生成的文件(libcrypto.so.1.1 和 libssl.so.1.1)从 /usr/lib/x86_64-linux-gnu 文件夹复制到与 DataSnap 服务器相同的文件夹和 /usr/lib 文件夹中。在每种情况下,我只用 .so 扩展名重命名了文件。我已经验证了该副本确实有效,但没有运气。

感觉有两个可能的障碍 - 库文件不在正确的位置并且没有被加载,或者存在库版本问题。 Indy10 源代码正在寻找最高 .1.0.2 的版本扩展,这是 .1.1。当我将文件复制到应用程序文件夹并保留 .so 扩展名时,我删除了完整的扩展名,这有点作弊,但我们运行最新 OpenSSL 库的 Windows DataSnap 服务器没有任何问题,所以我希望它是不是版本兼容性问题。

如果有任何帮助或建议,我将不胜感激。如果这引起了 Remy Lebeau 的个人回应,那将是一份提前的节日礼物!

【问题讨论】:

  • 您怎么知道“Indy10 源代码正在寻找最高 .1.0.2 的版本扩展”? “我在复制文件时删除了完整的扩展名,这有点作弊”真的吗?什么是“完整的扩展”?
  • IdSSLOpenSSLHeaders.pas 中的 SSLDLLVers 常量数组在尝试加载其中一个库时使用。这个字符串数组有几个不同的版本,用作文件扩展名之后的文件后缀。它似乎会尝试加载libcrypto.so、libcrytpto.so.10、libcrypto.so.1.0.2 等。我称我正在做的事情是“作弊”,因为我正在将文件libcrypto.so.1.1 复制到libcrypto.so 并删除版本后缀希望加载常规的 .so 文件时不会出现任何版本兼容性问题。
  • Indy 还不支持 OpenSSL 1.1.x(相关工作正在进行中)。 1.0.2 是支持的最后一个版本。不要重命名文件。 1.1.x 不向后兼容 1.0.2
  • 谢谢@RemyLebeau,我会去找1.0.2的库文件。

标签: linux delphi openssl


【解决方案1】:

我认为问题在于尝试使用 Ubuntu 18.04。在 18.04 中加载 MS-SQL 驱动程序时我也遇到了问题,因此我转而使用 16.04 映像。这更正了 OpenSSL 驱动程序问题,因为该映像的最新库是 1.0.2,并且 MS-SQL 驱动程序也可以工作。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,我发现我的 libeay32.dll 和 ssleay32.dll 版本是 1.0.2.23,但仅适用于 1.0.2.21。我认为是因为目前对 Indy 的支持直到 1.0.2.21,但我对此不确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      相关资源
      最近更新 更多