linux - 如何在openssl中启用EVP功能?

标签 linux openssl heartbleed-bug

我正在尝试使用 Heartbleed 补丁 ( 1.0.1g ) 将我的 Web 服务器更新到最新的 openssl。我从 openssl.org 获取了 tarball。表示通常的./configure;制作;进行安装。 不得不说 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 文档称,由于一项专利(显然已于 2012 年到期),他们默认禁用 IDEA。他们详细介绍了如何禁用它,但没有介绍如何启用它。此外,他们说默认情况下它是禁用的。

Apache httpd 需要该符号,没有它就不会启动。

我尝试说“配置共享启用想法”并且配置脚本很高兴,但构建后符号仍然未定义。我将构建输出通过管道传输到一个文件中,并且正在编译加密/想法文件。

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

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

最佳答案

我解决了。问题很简单。这些符号在 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,其中包含所有好东西。我 从 openssl.so.1.0.0 ->/usr/local/etc/ssl/lib/openssl.so.1.0.0 在 /usr/lib64 中创建了符号链接(symbolic link)。 但我没有意识到我需要对 libcrypto.so 做同样的事情,这样仍然有旧的东西。

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

关于linux - 如何在openssl中启用EVP功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23016514/

相关文章:

linux - 简单的 bash 问题,-gt : unary operator expected error

security - 哪些 JBoss 版本(如果有)受到 Heartbleed 漏洞的影响?

c - 心脏出血错误 : Why is it even possible to process the heartbeat request before the payload is delivered?

c - OpenSSL 调试 - 如何在 openssl 中转储中间 ASN.1?

openssl - 使用 openssl 从自签名证书生成的证书签名请求是否应该显示扩展属性?

openssl - 在 x509 证书的颁发者和主题中定义 CN 有什么区别和影响?

security - 尝试登录的SSH haywire-Heartbleed?

linux - Linux 内核代码中的 "current"

c - 如何使用 pthread_mutex_destroy 在 Linux 中安全正确地销毁互斥量?

c - GtkFileChooserButton 中的 SIGSEGV