如何在openssl中启用EVP功能?

2 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
Run Code Online (Sandbox Code Playgroud)

nm -g | grep idea 说: U EVP_idea_cbc

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

Openssl文档说,由于专利(显然在2012年到期),他们默认禁用IDEA.他们详细介绍了如何禁用它,但没有详细说明如何启用它.此外,他们说它默认是禁用的.

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

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

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

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

小智 5

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

...新的openssl tarball默认安装其输出/usr/local/ssl.这是可配置的,但它确实想安装所有的ssl东西(包括libs)/something/something/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.坏魔鬼.