NginxのKernel TLS(kTLS)
KernelでTLSの暗号化と複合化を行うことでNginxのパフォーマンスを向上させる記事を読んだときの覚書。
環境: CentOS Stream 9, nginx 1.22.1, OpenSSL 3.0.7
1.Kernel TLS(kTLS)とは?
TLSをカーネルで実装して処理を高速化する仕組み。
Linuxカーネル4.17 + OpenSSL 3.0.0以上が必要。
RHEL9(CentOS Stream 9)から使える。
2.Kernel TLS(kTLS)が使えるか確認
カーネルのバージョンを確認。
# uname -a
Linux vm-dev1.hoge.co.jp 5.14.0-285.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 7 17:32:48 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
現在ロードされているカーネルモジュールの一覧。
参考: 第31章 カーネルモジュールの使用 Red Hat Enterprise Linux 6 | Red Hat Customer Portal
# lsmod
tlsカーネルモジュール情報の情報。
# modinfo tls
nginxのビルドオプションを確認。
# nginx -V
nginx version: nginx/1.22.1built by gcc 11.3.1 20221121 (Red Hat 11.3.1-4) (GCC)built with OpenSSL 3.0.7 1 Nov 2022TLS SNI support enabledconfigure arguments: (略) --with-openssl-opt=enable-ktls (略)
appstreamリポジトリからインストールしたNginx。
OpenSSLが対応しているスイートの一覧。
# openssl ciphers -v
OpenSSLの設定は「/etc/pki/tls/openssl.cnf」。
OpenSSLのバージョン確認。
# openssl version
OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
3.NginxでkTLSを有効化
「ssl_conf_command Options KTLS;」を設定ファイルに記載する。
来月頭にやってみる予定。