web-dev-qa-db-ja.com

Apacheに別のOpenSSLを使用する

ソースからApacheをコンパイルし、静的にリンクしていますmod_ssl。システムにインストールされているバージョンとは異なるバージョンのOpenSSLを使用したいと考えています。によって管理され続ける他のインストールされたソフトウェアによって使用されるコアシステムのSSLバージョンを変更したくないので、CentOSであるシステムの残りの部分に影響を与えない方法でこれを実行したいと思います。パッケージマネージャー。

これを適切に行うにはどうすればよいですか?

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を起動するとき。これは正常に機能しますが、それが適切なアプローチかどうかはわかりません。これに取り組むための推奨される方法は何ですか?代替のライブラリ検索パス用のディレクトリを追加するためのより良い方法はありますか?

2
Nigel B. Peck

まず、 OpenSSL の目的のバージョンを取得し、システムバージョンに干渉しない場所にインストールする必要があります、例えば/opt

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

次に、最新の Apache 2.4.xAPRおよびAPR-Util ライブラリを取得します。 3つのパッケージすべてを同じソースツリーに解凍する必要があります。後者の2つは、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
1
Bart

LD_LIBRARY_PATHをbinディレクトリのenvvarsファイルに追加します。これはapachectlによって使用されます。

1
Nigel B. Peck