CentOS7にて、opensslの最新版を入れて、httpd(apache)をTLSv1.3に対応するメモ書きです。
参考記事
nginx、phpの関係は、上記の記事を・・・
openssl 1.1.1kインストール
openssl 1.1.1
nginxのほうで書いた記事と同じ方法です。
yum で最初から入っていたバージョンは、
# /usr/bin/openssl version OpenSSL 1.0.2k-fips 26 Jan 2017
↑ これを、最新の、openssl 1.1.1kにします。
ソースインストールしか手段はありません・・・
# cd /usr/local/src/ # wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz # tar xzvf openssl-1.1.1k.tar.gz # cd openssl-1.1.1k # ./config --prefix=/usr/local/openssl shared zlib
↑「prefix」でインストールディレクトリを指定します。
指定をしなくてもphp、nginxとも、構築が可能かと思います。
指定した方が、面倒ではないので・・・
# make # make install
↑コンパイルして、インストールをします。
vi /etc/ld.so.conf.d/openssl-1.1.conf /usr/local/openssl/lib/
↑上記、1行を入れて保存をします。
# ldconfig # ldconfig -p |grep openssl libssl.so.1.1 (libc6,x86-64) => /usr/local/openssl/lib/libssl.so.1.1 libssl.so (libc6,x86-64) => /usr/local/openssl/lib/libssl.so libcrypto.so.1.1 (libc6,x86-64) => /usr/local/openssl/lib/libcrypto.so.1.1 libcrypto.so (libc6,x86-64) => /usr/local/openssl/lib/libcrypto.so
↑ライブラリの設定ができました。
# cd # vi .bashrc export PATH="/usr/local/openssl/bin/:$PATH";
↑「export」の行を加えます。
「openssl」コマンドで、パスが通るようにします。
# which openssl /usr/local/openssl/bin/openssl # openssl version OpenSSL 1.1.1k XX Xxx 2021
↑ 新しいバージョンが認識されました。
# ldconfig -p |grep ssl libssl3.so (libc6,x86-64) => /lib64/libssl3.so libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10 libssl.so.1.1 (libc6,x86-64) => /usr/local/openssl/lib/libssl.so.1.1 libssl.so (libc6,x86-64) => /usr/local/openssl/lib/libssl.so libssl.so (libc6,x86-64) => /lib64/libssl.so libcrypto.so.1.1 (libc6,x86-64) => /usr/local/openssl/lib/libcrypto.so.1.1 libcrypto.so (libc6,x86-64) => /usr/local/openssl/lib/libcrypto.so
↑ ライブラリは、openssl 1.0.x系と、openssl 1.1.x系が同居しております。
httpd 2.4.41
openssl 1.1.1kの認識、試行錯誤
openssl の新しいバージョンを認識させるのに少し、苦労をしました。
export PKG_CONFIG_PATH=/usr/local/openssl/lib/pkgconfig/
↑上記の設定が重要です。
export LD_LIBRARY_PATH=/usr/local/openssl/lib/ export LD_LIBRARY_PATH_64=/usr/local/openssl/lib/
↑上記の環境変数を設定しても、今回のhttp 2.4.41では、うまく、認識してくれませんでした。
--with-ssl=/usr/local/openssl/lib/ --with-ssl=/usr/local/src/openssl-1.1.1k
と、httpd 2.4.41 の、configure時に、「–with-ssl」を指定しても、認識してくれませんでした。
最終的に有効な設定
# ldconfig -p |grep ssl libssl3.so (libc6,x86-64) => /lib64/libssl3.so libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10 libssl.so.1.1 (libc6,x86-64) => /usr/local/openssl/lib/libssl.so.1.1 libssl.so (libc6,x86-64) => /usr/local/openssl/lib/libssl.so libssl.so (libc6,x86-64) => /lib64/libssl.so libcrypto.so.1.1 (libc6,x86-64) => /usr/local/openssl/lib/libcrypto.so.1.1 libcrypto.so (libc6,x86-64) => /usr/local/openssl/lib/libcrypto.so
1)↑ ldconfig で、認識させる
export PKG_CONFIG_PATH=/usr/local/openssl/lib/pkgconfig/
2)↑ 環境変数、PKG_CONFIG_PATHで設定
この2つが、重要でした。
httpd 2.4.41 インストール
# export PKG_CONFIG_PATH=/usr/local/openssl/lib/pkgconfig/ # tar xzvf httpd-2.4.41.tar.gz # cd httpd-2.4.41 # ./configure --enable-suexec --enable-ssl --with-suexec-caller=www --with-suexec-userdir=web --with-suexec-docroot=/home --with-suexec-logfile=/usr/local/apache2/logs/suexec_log --with-suexec-uidmin=100 --with-suexec-gidmin=100 --with-suexec-safepath=/bin:/usr/bin --enable-module=so --enable-module=rewrite --enable-modules=ssl
# make # ldd ./modules/ssl/.libs/mod_ssl.so linux-vdso.so.1 => (0x00007ffeef1b0000) libssl.so.1.1 => /usr/local/openssl/lib/libssl.so.1.1 (0x00007f3d369b1000) libcrypto.so.1.1 => /usr/local/openssl/lib/libcrypto.so.1.1 (0x00007f3d364c5000) librt.so.1 => /lib64/librt.so.1 (0x00007f3d362bd000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f3d36086000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3d35e6a000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f3d35c66000) libc.so.6 => /lib64/libc.so.6 (0x00007f3d35898000) libz.so.1 => /lib64/libz.so.1 (0x00007f3d35682000) libfreebl3.so => /lib64/libfreebl3.so (0x00007f3d3547f000) /lib64/ld-linux-x86-64.so.2 (0x00007f3d36e7e000)
↑ 「make install」する前に(本番ディレクトリにインストールをする前に)、openssl 1.1.1系がリンクされいるかチェックしましょう。
「libssl.so.1.1 => /usr/local/openssl/lib/libssl.so.1.1」
となっているので、大丈夫のようです。
openssl 1.0 系では、
「libssl.so.10 => /lib64/libssl.so.10」
というふうに表示されると、openssl 1.0系となります。。
# make install
↑インストールをします。
httpd(apache) 再起動後
/usr/local/apache2/logs/error_log
に
Apache/2.4.41 (Unix) OpenSSL/1.1.1k
↑ と表示されていればOKです。
httpd 設定
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
もしくは、
SSLProtocol -all +TLSv1.2 +TLSv1.3
でもいいかと思います。
apacheを再起動して、
にてテストをすると
と、すべてOK(Excellent)となります。