构建httpd找不到Openssl

构建httpd找不到Openssl

我正在尝试从源代码重建 apache,但遇到了以前没有遇到过的问题。

我过去多次从源代码构建了 apache 版本 2.4.57,并且在此make阶段没有出现任何问题。

我抓住阿帕奇:

wget https://archive.apache.org/dist/httpd/httpd-2.4.57.tar.gz

配置它:

./configure --prefix=/path/to/server --with-ssl=/opt/openssl/bin

并尝试构建:

make

但后来我收到这个错误:

/usr/share/apr-1.0/build/libtool --silent --mode=link x86_64-linux-gnu-gcc  -pthread    \
         -o ab  ab.lo       /usr/lib/x86_64-linux-gnu/libaprutil-1.la /usr/lib/x86_64-linux-gnu/libapr-1.la -lm -lssl -lcrypto
/usr/bin/ld: ab.o: in function `ssl_print_cert_info':
ab.c:(.text+0xa94): undefined reference to `EVP_PKEY_get_bits'
/usr/bin/ld: ab.o: in function `ssl_print_info':
ab.c:(.text+0xc6c): undefined reference to `SSL_get1_peer_certificate'
/usr/bin/ld: ab.o: in function `ssl_proceed_handshake':
ab.c:(.text+0xe0c): undefined reference to `SSL_get1_peer_certificate'
/usr/bin/ld: ab.c:(.text+0xe2b): undefined reference to `EVP_PKEY_get_bits'
/usr/bin/ld: ab.c:(.text+0xefc): undefined reference to `EVP_PKEY_get_id'
/usr/bin/ld: ab.c:(.text+0xf2d): undefined reference to `EVP_PKEY_get_bits'
/usr/bin/ld: ab.c:(.text+0xf62): undefined reference to `EVP_PKEY_get_bits'
/usr/bin/ld: ab.c:(.text+0xff5): undefined reference to `EVP_PKEY_get_bits'
/usr/bin/ld: ab.c:(.text+0x102f): undefined reference to `EVP_PKEY_get_bits'
/usr/bin/ld: ab.c:(.text+0x103d): undefined reference to `EVP_PKEY_get_id'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:73: ab] Error 1
make[2]: Leaving directory '/srv/apache/httpd-2.4.57/support'
make[1]: *** [/srv/apache/httpd-2.4.57/build/rules.mk:75: all-recursive] Error 1
make[1]: Leaving directory '/srv/apache/httpd-2.4.57/support'
make: *** [/srv/apache/httpd-2.4.57/build/rules.mk:75: all-recursive] Error 1

尝试解决方案

我最近一直在玩postfix,并遇到了其中版本的问题openssl。在尝试解决这个问题时,我似乎改变了我的系统openssl库,现在 apache 无法构建。

在尝试修复时Openssl,我怀疑问题可能是我的 openssl 版本对于 apache 版本 2.4.57 来说太现代(3.2.1),因此,按照这篇文章: https://askubuntu.com/questions/1126893/how-to-install-openssl-1-1-1-and-libssl-package 我降级到1.1.1版本。我将 apache 配置为使用此版本进行构建。不幸的是,没有运气。

尽管在网上搜索,我找不到解决这个特定问题的任何方法。我也很难找到关于 apache 需要什么版本的 OpenSSL 的参考,或者是否可以配置 apache 来构建而不使用这些库。可能是一面./configure旗帜?我不介意在没有 SSL 支持的情况下构建。

如果有人可以通过特定的解决方案或有关 httpd 所需版本的可能提示来阐明这种情况,我将不胜感激。

更新

我按照评论中的建议,重复了上面引用的 openssl 版本 3.0.2 的 stackoverflow 帖子中列出的 Openssl 说明。运行时make test,一些测试失败:

Test Summary Report
-------------------
25-test_verify.t                 (Wstat: 512 Tests: 160 Failed: 2)
  Failed tests:  157-158
  Non-zero exit status: 2
80-test_cms.t                    (Wstat: 1792 Tests: 12 Failed: 7)
  Failed tests:  2-6, 9, 12
  Non-zero exit status: 7
80-test_ssl_new.t                (Wstat: 256 Tests: 30 Failed: 1)
  Failed test:  12
  Non-zero exit status: 1
Files=242, Tests=3284, 433 wallclock secs ( 8.33 usr  0.51 sys + 391.95 cusr 46.46 csys = 447.25 CPU)
Result: FAIL

尽管出现这些测试错误,我还是继续安装 Openssl。当我配置 apache 时:

./configure --with-ssl=/opt/openssl

没有错误 - 问题已解决。

我不清楚这些make test错误指的是什么 - 如果有人能阐明这一点,我将不胜感激。

感谢评论中的 @steeldriver 以及实践中的确认,我知道 httpd-2.4.57 可以与 openssl-3.0.2 一起使用 - 我不清楚如何找到 httpd 的依赖项要求。如果有人能再次指出我正确的方向,我将不胜感激。

相关内容