Apacheに最新版のOpenSSL3を組み込んでソースインストールする方法
前提
書くこと/書かないこと
最新のOpenSSLを組み込んだApacheをソースコードからインストールする方法を書きます。
環境
AlmaLinux release 8.6 (Sky Tiger) ※CentOS8代替OS
OpenSSL 3.0.3 3 May 2022 (Library: OpenSSL 3.0.3 3 May 2022)
さくっと
内容的にさくっとまとめるのが難しいので後回しにします。
こってりと
はじめに
Apacheをリポジトリからインストールすると通常は最新版でなく、OpenSSLも古いため脆弱性が残る状態だったりします。
OpenSSL3の最新版をソースコードからインストールする方法は前回書いたので、今回はこの続きとして、このOpenSSLを組み込んだApacheのインストールについて書きます。
事前準備
Apacheをソースインストールする場合はAPRとAPR-utilが必要になりますので、まずはこちらを先にインストールします。
開発ツールのインストール
APR-utilをインストールするのに必要とexpat-develとpcre-develを先にdnfからインストールします。
# dnf install expat-devel pcre-devel
APRとAPR-utilのインストール
Apacheのサイトから最新版を入手します。
https://apr.apache.org/download.cgi
現時点でAPRは1.7.0、APR-utilは1.6.1が最新です。
それぞれのtar.gzを右クリックしてリンクアドレスをコピーし、サーバにダウンロードします。
# cd /usr/local/src/
# wget https://dlcdn.apache.org//apr/apr-1.7.0.tar.gz
--2022-06-04 23:40:34-- https://dlcdn.apache.org//apr/apr-1.7.0.tar.gz
dlcdn.apache.org (dlcdn.apache.org) をDNSに問いあわせています... 151.101.2.132, 2a04:4e42::644
dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443 に接続しています... 接続 しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1093896 (1.0M) [application/x-gzip]
`apr-1.7.0.tar.gz' に保存中
apr-1.7.0.tar.gz 100%[===================>] 1.04M --.-KB/s 時間 0.02s
2022-06-04 23:40:34 (57.1 MB/s) - `apr-1.7.0.tar.gz' へ保存完了 [1093896/1093896]
# wget https://dlcdn.apache.org//apr/apr-util-1.6.1.tar.gz
--2022-06-04 23:41:02-- https://dlcdn.apache.org//apr/apr-util-1.6.1.tar.gz
dlcdn.apache.org (dlcdn.apache.org) をDNSに問いあわせています... 151.101.2.132, 2a04:4e42::644
dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443 に接続しています... 接続 しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 554301 (541K) [application/x-gzip]
`apr-util-1.6.1.tar.gz' に保存中
apr-util-1.6.1.tar. 100%[===================>] 541.31K --.-KB/s 時間 0.01s
2022-06-04 23:41:03 (37.8 MB/s) - `apr-util-1.6.1.tar.gz' へ保存完了 [554301/554301]
解凍 ~ コンフィギュレーション ~ ビルド ~ インストール
一気に行きます。
まずはAPRから。
# cd /usr/local/src
# tar zxvf apr-1.7.0.tar.gz
# cd apr-1.7.0/
# ./configure
# make
# make install
次はAPR-utilです。今インストールしたばかりのAPRのパスを指定します。
# cd /usr/local/src
# tar zxvf apr-util-1.6.1.tar.gz
# cd apr-util-1.6.1
# ./configure --with-apr=/usr/local/apr
# make
# make install
ここまででApacheインストールの事前準備完了です。
次はようやくApache本体のインストールになります。
Apacheのインストール
ソースコードの入手
Apacheのサイトから最新版を入手します。
https://httpd.apache.org/download.cgi
現時点では2.4.53が最新です。
httpd-2.4.53.tar.gzを右クリックしてリンクアドレスをコピーし、サーバにダウンロードします。
# cd /usr/local/src/
# wget https://dlcdn.apache.org/httpd/httpd-2.4.53.tar.gz
--2022-06-02 19:44:52-- https://dlcdn.apache.org/httpd/httpd-2.4.53.tar.gz
dlcdn.apache.org (dlcdn.apache.org) をDNSに問いあわせています... 151.101.2.132, 2a04:4e42::644
dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443 に接続しています... 接続 しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 9726558 (9.3M) [application/x-gzip]
`httpd-2.4.53.tar.gz' に保存中
httpd-2.4.53.tar.gz 100%[===================>] 9.28M --.-KB/s 時間 0.06s
2022-06-02 19:44:52 (156 MB/s) - `httpd-2.4.53.tar.gz' へ保存完了 [9726558/9726558]
解凍 ~ コンフィギュレーション
tar.gzを展開してconfigureします。
configureのオプションではインストール先のパス(prefix)、APRのパス(with-included-apr)、SSLモジュールの有効化(enable-ssl)、別インストールしたOpenSSL3のパス(with-ssl)を明示的に指定します。
# tar zxvf httpd-2.4.53.tar.gz
# cd httpd-2.4.53/
# ./configure --prefix=/usr/local/httpd --enable-ssl --with-ssl=/usr/local/openssl --with-included-apr=/usr/local/apr
ビルド ~ インストール
エラーがなければmakeとmake installだけでOKです。
# make
# make install
インストール結果の確認
インストールが終わったらバージョンを確認します。
# /usr/local/httpd/bin/httpd -v
Server version: Apache/2.4.53 (Unix)
OKですね。
mod_sslの方もOpenSSL3が使われているか確認します。
# ldd /usr/local/httpd/modules/mod_ssl.so
linux-vdso.so.1 (0x00007fff6eddb000)
libssl.so.3 => /usr/local/openssl/lib64/libssl.so.3 (0x00007f882f61a000)
libcrypto.so.3 => /usr/local/openssl/lib64/libcrypto.so.3 (0x00007f882efb9000)
librt.so.1 => /lib64/librt.so.1 (0x00007f882edb1000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f882eb88000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f882e968000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f882e764000)
libc.so.6 => /lib64/libc.so.6 (0x00007f882e39f000)
libz.so.1 => /lib64/libz.so.1 (0x00007f882e187000)
/lib64/ld-linux-x86-64.so.2 (0x00007f882faff000)
libssl.so.3とlibcrypto.so.3の参照先がソースインストールした/usr/local/opensslになっているのでOKです。
apacheのモジュールも見てみましょう。
/usr/local/httpd/modulesの下にインストールされたモジュールと、初期状態で有効になっているものを確認すると下記のようになっていました。
モジュール | 存在(/etc/httpd/modules) | 有効(httpd -M) |
---|---|---|
mod_access_compat | Y | Y |
mod_actions | Y | |
mod_alias | Y | Y |
mod_allowmethods | Y | |
mod_auth_basic | Y | Y |
mod_auth_digest | Y | |
mod_auth_form | Y | |
mod_authn_anon | Y | |
mod_authn_core | Y | Y |
mod_authn_dbd | Y | |
mod_authn_dbm | Y | |
mod_authn_file | Y | Y |
mod_authn_socache | Y | |
mod_authz_core | Y | Y |
mod_authz_dbd | Y | |
mod_authz_dbm | Y | |
mod_authz_groupfile | Y | Y |
mod_authz_host | Y | Y |
mod_authz_owner | Y | |
mod_authz_user | Y | Y |
mod_autoindex | Y | Y |
mod_buffer | Y | |
mod_cache | Y | |
mod_cache_disk | Y | |
mod_cache_socache | Y | |
mod_cgid | Y | |
mod_dav | Y | |
mod_dav_fs | Y | |
mod_dbd | Y | |
mod_deflate | Y | |
mod_dir | Y | Y |
mod_dumpio | Y | |
mod_env | Y | Y |
mod_expires | Y | |
mod_ext_filter | Y | |
mod_file_cache | Y | |
mod_filter | Y | Y |
mod_headers | Y | Y |
mod_include | Y | |
mod_info | Y | |
mod_lbmethod_bybusyness | Y | |
mod_lbmethod_byrequests | Y | |
mod_lbmethod_bytraffic | Y | |
mod_lbmethod_heartbeat | Y | |
mod_log_config | Y | Y |
mod_log_debug | Y | |
mod_logio | Y | |
mod_macro | Y | |
mod_mime | Y | Y |
mod_negotiation | Y | |
mod_proxy | Y | |
mod_proxy_ajp | Y | |
mod_proxy_balancer | Y | |
mod_proxy_connect | Y | |
mod_proxy_express | Y | |
mod_proxy_fcgi | Y | |
mod_proxy_fdpass | Y | |
mod_proxy_ftp | Y | |
mod_proxy_hcheck | Y | |
mod_proxy_http | Y | |
mod_proxy_scgi | Y | |
mod_proxy_uwsgi | Y | |
mod_proxy_wstunnel | Y | |
mod_ratelimit | Y | |
mod_remoteip | Y | |
mod_reqtimeout | Y | Y |
mod_request | Y | |
mod_rewrite | Y | |
mod_sed | Y | |
mod_session | Y | |
mod_session_cookie | Y | |
mod_session_dbd | Y | |
mod_setenvif | Y | Y |
mod_slotmem_shm | Y | |
mod_socache_dbm | Y | |
mod_socache_memcache | Y | |
mod_socache_redis | Y | |
mod_socache_shmcb | Y | |
mod_speling | Y | |
mod_ssl | Y | |
mod_status | Y | Y |
mod_substitute | Y | |
mod_unique_id | Y | |
mod_unixd | Y | Y |
mod_userdir | Y | |
mod_version | Y | Y |
mod_vhost_alias | Y | |
mod_watchdog | Y |
不要なモジュールが有効になっているのは想定内ですが、mod_http2を筆頭に、一部の必要なモジュールが存在しないことがわかりました。
「最新のOpenSSLを組み込んだApacheをソースコードからインストールする」というこの記事の目的は最低限達成できましたが、このままでは実用に耐えないので、また別記事を書こうと思います。
ディスカッション
コメント一覧
まだ、コメントがありません