当サーバ(CentOS7)のTLS1.3対応を実施した(CentOS7のTLS1.3対応とApacheへの適用)際には、OpenSSLのバージョンは、1.1.1uにしましたが、Apacheは、過去にアップデートした(CentOS7のApache最新版アップデート)バージョン2.4.46のままだったので、それぞれを最新安定版にアップデートしました。
◆最新安定バージョン
OpenSSLは、2023.8.1にバージョン1.1.1vもリリースされているが、サポート期間が2023.9.11までとなっているので、最新のバージョン3.1へとアップデートします。
Apache:2.4.46 ⇒ 2.4.57
OpenSSL:1.1.1u ⇒ 3.1.2
手順については、上手くいかなかったりした部分もあったが、その点については、反映しているので以降の順に進めればアップデートされます。
※実施については、自己責任でお願いします。
◆OpenSSLのバージョンアップ
先にOpenSSLのバージョンアップを実施します。
・必要パッケージのインストール
1 | # yum install perl-IPC-Cmd |
1行目:「perl-IPC-Cmd」パッケージのインストール
・OpenSSLの最新バージョンのダウンロードとインストール
最新バージョンを確認し、ダウンロードとインストールを実施します。
1 2 3 4 5 6 | # wget https://www.openssl.org/source/openssl-3.1.2.tar.gz # tar zxvf openssl-3.1.2.tar.gz # cd openssl-3.1.2/ # ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl # make # make install |
1行目:最新安定バージョン3.1.2(2023.8.6現在)のダウンロード
2行目:ダウンロードファイルの展開
3行目:展開ディレクトリへ移動
4行目:configureの実行
5行目:コンパイル
6行目:インストール
・インストールディレクトリの確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # ll /usr/local/openssl/ 合計 68 drwxr-xr-x 2 root root 4096 8月 6 11:03 bin drwxr-xr-x 2 root root 4096 6月 18 11:52 certs -rw-r--r-- 1 root root 412 6月 18 11:52 ct_log_list.cnf -rw-r--r-- 1 root root 412 8月 6 11:03 ct_log_list.cnf.dist drwxr-xr-x 3 root root 4096 6月 18 11:52 include drwxr-xr-x 4 root root 4096 6月 18 11:52 lib drwxr-xr-x 5 root root 4096 8月 6 11:03 lib64 drwxr-xr-x 2 root root 4096 8月 6 11:03 misc -rw-r--r-- 1 root root 10909 6月 18 11:52 openssl.cnf -rw-r--r-- 1 root root 12324 8月 6 11:03 openssl.cnf.dist drwxr-xr-x 2 root root 4096 6月 18 11:52 private drwxr-xr-x 4 root root 4096 6月 18 11:53 share |
1行目:インストールしたディレクトリの確認
8行目:バージョン1.1.1uのライブラリディレクトリ
9行目:バージョン3.1.2のライブラリディレクトリ
1 2 3 4 5 6 7 8 9 10 11 | # ll /usr/local/openssl/lib64/ 合計 16524 drwxr-xr-x 2 root root 4096 8月 6 11:03 engines-3 -rw-r--r-- 1 root root 9559038 8月 6 11:03 libcrypto.a lrwxrwxrwx 1 root root 14 8月 6 11:03 libcrypto.so -> libcrypto.so.3 -rwxr-xr-x 1 root root 5303616 8月 6 11:03 libcrypto.so.3 -rw-r--r-- 1 root root 1229284 8月 6 11:03 libssl.a lrwxrwxrwx 1 root root 11 8月 6 11:03 libssl.so -> libssl.so.3 -rwxr-xr-x 1 root root 772368 8月 6 11:03 libssl.so.3 drwxr-xr-x 2 root root 4096 8月 6 11:03 ossl-modules drwxr-xr-x 2 root root 4096 8月 6 11:03 pkgconfig |
1行目:ライブラリディレクトリの確認
・旧バージョンのライブラリディレクトリのリネーム
削除してもいいのかもしれないが、とりあえずリネームしバックアップします。
※活かしたままにしておくと、Apacheのコンパイルの際に読み込みに行っているようで失敗します。
1 | # mv /usr/local/openssl/lib /usr/local/openssl/lib_1.1_org |
1行目:バージョン1.1.1uのライブラリディレクトリをリネーム
・共有ライブラリの設定
1 2 | # echo "/usr/local/openssl/lib64" > /etc/ld.so.conf.d/openssl.conf # ldconfig |
1行目:共有ライブラリへのパスを定義
2行目:共有ライブラリへの検索キャッシュの更新
・ライブラリの確認
1 2 3 4 5 6 7 8 | # ldconfig -p | grep ssl libssl3.so (libc6,x86-64) => /lib64/libssl3.so libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10 libssl.so.3 (libc6,x86-64) => /usr/local/openssl/lib64/libssl.so.3 libssl.so (libc6,x86-64) => /usr/local/openssl/lib64/libssl.so libssl.so (libc6,x86-64) => /lib64/libssl.so libcrypto.so.3 (libc6,x86-64) => /usr/local/openssl/lib64/libcrypto.so.3 libcrypto.so (libc6,x86-64) => /usr/local/openssl/lib64/libcrypto.so |
1行目:「ldconfig」コマンドの「-p」オプションで現在のキャッシュに保存されているライブラリのリストを確認、「grep」で「ssl」を検索表示
4,5,7,8行目:インストールしたバージョン「3」のライブラリ
・コマンドのパスとバージョンの確認
1 2 3 4 | # which openssl /usr/local/openssl/bin/openssl # openssl version OpenSSL 3.1.2 1 Aug 2023 (Library: OpenSSL 3.1.2 1 Aug 2023) |
1行目:コマンドのパスの確認
2行目:コマンドのフルパス表示
3行目:インストールしたOpenSSLのバージョン確認
4行目:バージョン「3.1.2」を表示
コマンドのパス設定及び環境変数設定は前回1.1.1uアップデート時に実施しているのでする必要はありません。
されていない場合は、こちらを参照してください。
◆Apacheのアップデート
前回「CentOS7のTLS1.3対応とApacheへの適用」で実施した要領と同様に「mod_ssl」モジュールのみ入れ替えます。
・「mod_ssl」モジュールのリネーム
1 | # mv /etc/httpd/modules/mod_ssl.so /etc/httpd/modules/mod_ssl.so_1.1_org |
1行目:バージョン1.1.1uの「mod_ssl」モジュールをリネーム
※Apacheをアップデートした際に上書きされてしまいます。
・Apacheのパッケージのダウンロードとビルド
1 2 3 4 5 | # wget https://dlcdn.apache.org/httpd/httpd-2.4.57.tar.gz # tar zxvf httpd-2.4.57.tar.gz # cd httpd-2.4.57/ # ./configure --with-ssl=/usr/local/openssl # make |
1行目:Apacheのソースファイルをダウンロード
2行目:ダウンロードファイルの展開
3行目:展開ディレクトリへ移動
4行目:configureの実行。「–with-ssl」オプションでOpenSSLのインストールディレクトリを指定
5行目:コンパイル
「mod_ssl」モジュールだけ必要なので、「make install」は実行しません。
・「mod_ssl」モジュールの確認
1 2 3 4 5 6 7 8 9 10 | # readelf -d modules/ssl/.libs/mod_ssl.so Dynamic section at offset 0x4dd48 contains 29 entries: タグ タイプ 名前/値 0x0000000000000001 (NEEDED) 共有ライブラリ: [libssl.so.3] 0x0000000000000001 (NEEDED) 共有ライブラリ: [libcrypto.so.3] 0x0000000000000001 (NEEDED) 共有ライブラリ: [libpthread.so.0] 0x0000000000000001 (NEEDED) 共有ライブラリ: [libdl.so.2] 0x0000000000000001 (NEEDED) 共有ライブラリ: [libc.so.6] 0x000000000000000e (SONAME) ライブラリの soname: [mod_ssl.so] |
1行目:「readelf」コマンドで「mod_ssl」のヘッダ情報を確認
5,6行目:共有ライブラリのバージョンがインストールしたOpenSSLのバージョン(3)になっているのを確認
・Apacheのyumアップデート
過去記事「CentOS7のApache最新版アップデート」で実施したIUSリポジトリを使用し、アップデートします。
1 2 3 4 5 6 7 8 9 10 11 | # yum update --enablerepo=ius httpd ~ 中略 ~ 更新: httpd24u.x86_64 0:2.4.57-1.el7.ius 依存性を更新しました: httpd24u-devel.x86_64 0:2.4.57-1.el7.ius httpd24u-filesystem.noarch 0:2.4.57-1.el7.ius httpd24u-mod_ssl.x86_64 1:2.4.57-1.el7.ius httpd24u-tools.x86_64 0:2.4.57-1.el7.ius 完了しました! |
1行目:IUSリポジトリを有効にしてyumでアップデート
・バージョンの確認
1 2 3 | # httpd -v Server version: Apache/2.4.57 (IUS) Server built: Apr 7 2023 14:49:47 |
1行目:Apacheのバージョンの確認
2行目:バージョン「2.4.57」を表示
・「mod_ssl」モジュールの設置
1 2 3 | # mv /etc/httpd/modules/mod_ssl.so /etc/httpd/modules/mod_ssl.so_org mv: `/etc/httpd/modules/mod_ssl.so_org' を上書きしますか? y # cp modules/ssl/.libs/mod_ssl.so /etc/httpd/modules/ |
1行目:「mod_ssl」モジュールのバックアップ
2行目:アップデートした際のバックアップファイルがある場合は上書き
3行目:新しい「mod_ssl」モジュールをコピーして設置
1 2 | # systemctl restart httpd # systemctl status httpd |
1行目:サービスの再起動
2行目:サービスの状態確認
◆確認
前回更新時に同様の確認をしているので、詳細はこちらを参照してください。
・TLS checker
「TLS checker」でTLS/SSL設定を確認できます。
・SSL Labs
「SSL Labs」では、Webサーバの構成情報を詳細に分析できます。
・ブラウザ(Chrome)での確認
「デベロッパーツール」で「TLSプロトコルバージョン」と「暗号化スイート」を確認できます。
この手順で実施するとダウンタイムは恐らく最小限で済むものと考えらます。
次回は、Apacheのチューニングをしていきたいと思います。