TLS v1.3 にするために、openssl 1.1.1をソースインストール。
phpとnginxを新しいopenssslに対応させたときの覚え書きです。
関連記事
↑ httpd(apache) の設定は、こちらに、
openssl 1.1.1
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 libevent_openssl-2.0.so.5 (libc6,x86-64) => /lib64/libevent_openssl-2.0.so.5 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
↑ 新しいバージョンが認識されました。
Nginx with openssl 1.1.1
nginx を openssl 1.1.1k および、TLS v1.3 に対応させます。
# wget http://nginx.org/download/nginx-1.20.0.tar.gz # tar xzvf nginx-1.20.0.tar.gz # cd nginx-1.20.0/ # ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-openssl=/usr/local/src/openssl-1.1.1k
↑最後の「–with-openssl=/usr/local/src/openssl-1.1.1k」が新しく加わりました。
その他、必要/不必要、及び、変更があるかと思います。
# make # make install
↑インストールできました。
# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.20.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) built with OpenSSL 1.1.1k XX Xxx 2021 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-openssl=/usr/local/src/openssl-1.1.1k
↑ 新しいopensslに対応しました。
# ssl_protocols TLSv1.2; ↓ # ssl_protocols TLSv1.2 TLSv1.3;
↑ Nginxの設定ファイルに「TLSv1.3」を加えます。
複数サーバーを設定している場合、上記は、該当のサーバーのセッテイングだけではなく、default(最初の)設定も、変更しないと有効になりません。
↑ TLS v 1.3のチェックサイト
↑ 認識されました。
でも、チェックができます。
また、該当サイトを開き、Chromeブラウザ、右上のニューから「その他のツール」「デベロッパーツール」を選び、「Security」タグを選びます。
↑ 右下に「TLS 1.3」と出ていればOK。
php 7.4.x with openssl 1.1.1
# wget https://www.php.net/distributions/php-7.4.19.tar.gz # tar xzvf php-7.4.19.tar.gz # cd php-7.4.19
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ # export OPENSSL_CFLAGS=-I/usr/local/openssl/include/ # export OPENSSL_LIBS=-L/usr/local/openssl/lib/
↑コンパイルを通すための設定です。後半2行は、openssl関係になります。
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs -with-mysqli --with-pdo-mysql --enable-mbstring --enable-pcntl --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-ftp --enable-gd --with-jpeg --with-webp --with-xpm --with-zlib --with-zip --with-snmp --enable-sockets --with-freetype --enable-cgi --with-curl --enable-intl --with-gettext --with-openssl --enable-bcmath --enable-exif
↑configureは、openssl 1.1.1にしたことによる変更点はないです。
前述の環境変数が大事です。
# make # make install # systemctl restart php-fpm
↑ openssl 1.1.1kが有効となりました。