对 Apache 使用不同的 OpenSSL

对 Apache 使用不同的 OpenSSL

我正在从源代码编译 Apache,并静态链接mod_ssl.我希望使用与系统安装版本不同的 OpenSSL 版本。我希望以一种不影响系统其余部分(即 CentOS)的方式执行此操作,因为我希望不更改核心系统的 SSL 版本,该版本由其他已安装的软件使用,这些软件将继续由包管理器。

我怎样才能正确地做到这一点?

我尝试编译 Apache --with-ssl,它可以很好地编译它,但在尝试运行它时却找不到它。

./httpd: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

我想也许我可以LD_LIBRARY_PATH在启动 Apache 时进行设置,效果很好,但不确定这是一个合适的方法。解决这个问题的推荐方法是什么?有没有更好的方法来添加替代库搜索路径的目录?

答案1

首先,你应该获取所需的版本开放式SSL并将其安装在不会干扰您的系统版本的位置,例如/opt

$ ./config \
    --prefix=/opt/openssl-VERSION \
    --openssldir=/opt/openssl-VERSION
$ make
$ sudo make install

接下来,获取最新的阿帕奇2.4.x,APR 和 APR-Util图书馆。您需要将所有三个包解压到同一源代码树中,后两个包位于 Apache 期望的位置。例如:

$ tar zxvf httpd-VERSION.tar.gz
$ cd httpd-VERSION/srclib/
$ tar zxvf ../../apr-VERSION.tar.gz
$ ln -s apr-VERSION/ apr
$ tar zxvf ../../apr-util-VERSION.tar.gz
$ ln -s apr-util-VERSION/ apr-util

然后,配置并安装 Apache。该mod_ssl模块将静态编译,所有其他模块将动态编译,如下所示:

$ ./configure \
    --prefix=/opt/httpd \
    --with-included-apr \
    --enable-ssl \
    --with-ssl=/opt/openssl-VERSION \
    --enable-ssl-staticlib-deps \
    --enable-mods-static=ssl
$ make
$ sudo make install

答案2

将 LD_LIBRARY_PATH 添加到 bin 目录中的 envvars 文件中,然后 apachectl 将使用该文件。

相关内容