如何在openssl中启用EVP功能?

时间:2014-04-11 13:37:14

标签: linux openssl heartbleed-bug

我正在尝试使用heartbleed补丁(1.0.1g)将我的Web服务器更新到最新的openssl。我从openssl.org抓起了tarball。通常说./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文档说,由于专利(显然在2012年到期),他们默认禁用IDEA。他们详细介绍了如何禁用它,但没有详细说明如何启用它。此外,他们表示默认禁用它。

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

我试过说" config shared enable-idea"并且配置脚本很高兴,但构建后符号仍未定义。我将构建输出传送到一个文件中,并且正在编译加密/构思文件。

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

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

1 个答案:

答案 0 :(得分:5)

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

...新的openssl tarball默认在/usr/local/ssl安装其输出。这是可配置的,但它确实想要在/something/something/ssl中安装所有ssl内容(包括lib)。所以你有/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。坏妈。