【问题标题】:How do I enable EVP functions in openssl?如何在 openssl 中启用 EVP 功能?
【发布时间】:2014-04-11 13:37:14
【问题描述】:

我正在尝试使用 heartbleed 补丁 ( 1.0.1g ) 将我的 Web 服务器更新到最新的 openssl。我从 openssl.org 获取了压缩包。说平常的./configure; make; make install。 不得不说config shared 让它制作 .so 文件(默认情况下它只生成 .a )。更新了 /usr/lib64 中的链接以指向新的 .so -

现在 httpd 无法运行并出现以下问题:

/usr/sbin/httpd: symbol lookup error: /usr/lib64/libssl.so.1: undefined symbol: EVP_idea_cbc

nm -g | grep idea 说:U EVP_idea_cbc

...所以它知道符号,但符号未定义。

Openssl 文档说他们默认禁用 IDEA,因为专利(显然在 2012 年到期)。他们详细介绍了如何禁用它,但没有介绍如何启用它。此外,他们说默认情况下它是禁用的。

Apache httpd 需要该符号,没有它就无法启动。

我试过说“config shared enable-idea”并且配置脚本很开心,但是构建后符号仍然未定义。我将构建输出通过管道传输到一个文件中,并且正在编译加密/想法文件。

EVP_* 开始的每个符号都是未定义的...它们在libssl.a 中也是未定义的...所以也许我在寻找错误的 IDEA 树?

所以我的问题变成了 - 如何启用这些 EVP_* 符号?

【问题讨论】:

  • 你看过the FAQ这个网站吗?你的问题在这里跑题了,看来...
  • 我会说这是主题。它是关于网络安全、webapp 安全和加密的。

标签: linux openssl heartbleed-bug


【解决方案1】:

我解决了。问题很简单。这些符号在libssl.so(或.a)中确实是未定义的。它们实际上是在libcrypto.so 中定义的。我没有收到新的libcrypto.so,因为....

...默认情况下,新的 openssl tarball 将其输出安装在 /usr/local/ssl 中。这是可配置的,但它真的想在/something/something/ssl 中安装所有 ssl 东西(包括库)。所以你有/something/something/ssl/lib/something/something/ssl/bin等。

所以当我说make install 时,它创建了/usr/local/ssl,其中包含所有好东西。一世 在/usr/lib64 from openssl.so.1.0.0 -> /usr/local/etc/ssl/lib/openssl.so.1.0.0. 中建立了一个符号链接但我没有意识到我需要为libcrypto.so 做同样的事情,所以仍然有旧的东西。

所以我使用的是新的libssl.so 和旧的libcrypto.so。糟糕的魔力。

【讨论】:

  • 您必须小心将您的 OpenSSL 版本安装在您的发行版 OpenSSL 之上。通常,您创建自己的包来取代您的发行版的包。以下是您在 Ubuntu 中的操作方式:Override Distro Package with Custom Package?。抱歉,我不知道如何在 Slackware 中执行此操作。
猜你喜欢
  • 2021-03-17
  • 2020-12-20
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 2015-12-19
  • 1970-01-01
相关资源
最近更新 更多