結論
モダンな環境を試したい場合は最新のOSを利用しよう!
それでもCentOS7を使いたい場合は
以下のバージョンをインストールできる想定です
- Apache 2.4.51
- OpenSSL 1.1.1
環境
- AWS EC2
- インスタンス m5.xlarge
- OS CentOS 7 (x86_64)
- セキュリティグループ
- http, httpsは全開放
- sshは自分の環境のみ
EC2インスタンスの場合はfirewallではなくセキュリティグループで大抵は保護されます
手順
ルートユーザで作業します
# sudo su -
ある程度のツール群はインストールされている想定です
# yum install -y vim
- OpenSSLのインストールと適用
必要なモジュールをインストール
# yum install gcc zlib-devel
定石だとソースダウンロード以下で実施される
# cd /usr/local/src/
ソースをダウンロード
# wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
ダウンロードしたファイルを解凍する
# tar xzvf openssl-1.1.1l.tar.gz
解凍したディレクトリに移動
# cd openssl-1.1.1l
インストールディレクトリの指定
# ./config --prefix=/usr/local/openssl shared zlib
ビルド
# make
インストール
# make install
bashにパスを通す
# echo 'export PATH="/usr/local/openssl/bin/:$PATH";' >> ~/.bashrc
再読込み
# source ~/.bashrc
バージョン確認
# openssl version
OpenSSL 1.1.1l 24 Aug 2021
- Apacheのインストール
必要なモジュールをインストール
# yum -y install openldap-devel expat-devel libdb-devel mailcap system-logos
Apacheがインストールされている場合は関連モジュールも含め削除
# yum remove httpd*
リポジトリのインストール
# yum -y install https://repo.ius.io/ius-release-el7.rpm
Apacheのインストール
# yum -y install --disablerepo=base,extras,updates --enablerepo=ius httpd httpd-devel mod_ssl
バージョン確認
# httpd -v
Server version: Apache/2.4.51 (IUS)
Server built: Oct 8 2021 16:46:12
この状態ではmod_ssl.so
がOpenSSL 1.0
を参照してしまっている
イレギュラーだがApacheをビルドし直してmod_ssl.so
を頂戴する
mod_ssl.soの作成と適用
ディレクトリの移動
# cd /usr/local/src/
共有ライブラリに追加するためにインストールディレクトリのパスを記載
# vim /etc/ld.so.conf.d/openssl-1.1.conf
# cat /etc/ld.so.conf.d/openssl-1.1.conf
/usr/local/openssl/lib/
共有ライブラリの読み込み
# ldconfig
OpenSSL1.1.1を参照するように変数をセット
# export PKG_CONFIG_PATH=/usr/local/openssl/lib/pkgconfig/
必要なモジュールをインストール
# yum install bzip2 pcre pcre-devel prelink
ソースをダウンロード
# curl http://ftp.riken.jp/net/apache//httpd/httpd-2.4.51.tar.bz2 -O
ダウンロードしたファイルを解凍
# tar jxvf httpd-2.4.51.tar.bz2
解凍したディレクトリに移動
# cd httpd-2.4.51
設定は必要ないがmakefile作成のため実施
# ./configure
ビルド
# make
インストールせずにファイルのみ頂戴する
# cp modules/ssl/.libs/mod_ssl.so /etc/httpd/modules/
実行の許可
# execstack -c /etc/httpd/modules/libcrypto.so.1.1
Apacheの起動
# systemctl start httpd
セキュリティ設定の細かいことは他の方におまかせしますが、
ここまで対応すればTLSv1.2までの暗号スイートには対応できるはずです
補足
可能であればCentOS8以降を使いましょう
素直に最新版が入れられるはずです
余談
- アドベントカレンダー担当日
- 2021年12月2日0時0分
- 執筆開始
- 2021年12月1日11時02分
- 執筆終了
- 2021年12月2日00時05分
来年はやる前提で記事を用意します、、
それでは皆様よいお年を!