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.1
built by gcc 11.3.1 20221121 (Red Hat 11.3.1-4) (GCC)
built with OpenSSL 3.0.7 1 Nov 2022
TLS SNI support enabled
configure 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;」を設定ファイルに記載する。

来月頭にやってみる予定。



【関連記事】