mod_sslアップデート後、Nagios https監視で Warningメッセージ "HTTP WARNING 421 Misdirected Request" が発生

【環境】

Rocky Linux release 8.10

dnf update (2025/09/12)
- httpd-2.4.37-65.module+el8.10.0+2061+8d03fdec.5.x86_64
- httpd-filesystem-2.4.37-65.module+el8.10.0+2061+8d03fdec.5.noarch
- httpd-tools-2.4.37-65.module+el8.10.0+2061+8d03fdec.5.x86_64
- mod_http2-1.15.7-10.module+el8.10.0+2061+8d03fdec.4.x86_64
- mod_ssl-1:2.4.37-65.module+el8.10.0+2061+8d03fdec.5.x86_64

【監視方法】

check_http プラグイン (nagios-plugins-2.4.11) 利用
コマンド: check_http -H www.chovits.club -4 -S

【現象】

package 適用前は、ステータスOK(緑)であったが、packageアップデート後、Nagios監視で、OK(緑) -> Warning(黄)に変化。
メッセージ:HTTP WARNING: HTTP/1.1 421 Misdirected Request

【対応】

mod_ssl-2.4.37-65.module+el8.10.0+2061+8d03fdec.5.x86_64.rpmのリリースノートを確認。

今回
- Resolves: RHEL-99944 - CVE-2025-49812 httpd: HTTP Session Hijack via a TLS upgrade
- Resolves: RHEL-99969 - CVE-2024-47252 httpd: insufficient escaping of user-supplied data in mod_ssl
- Resolves: RHEL-99961 - CVE-2025-23048 httpd: access control bypass by trusted clients is possible using TLS 1.3 session resumption
に対する改修のようである。

「421 Misdirected Request」でgoogleったところ、SNI(Server Name Indication)に関連するとの事で、
3番目(RHEL-99961)の改修による影響っぽい。(ソースまで追っていないが)

とり急ぎ、apache のhttpd.confに以下を追加。
CustomLog "/tmp/ssl-test_log %t %h %{SSL_TLS_SNI}x \"%r\" %b"

〇 Firefox
[12/Sep/2025:11:46:11 +0900] xxx.xxx.xxx.xxx www.chovits.club "GET / HTTP/1.1" 12693

〇 check_http
[12/Sep/2025:11:46:45 +0900] yyy.yyy.yyy.yyy - "GET / HTTP/1.1" 322
check_http でのSNI値は空である。

【結論】

check_http -h でオプション確認

 --sni
    Enable SSL/TLS hostname extension support (SNI)

試に手動で、

$ check_http -H www.chovits.club -4 -S
HTTP WARNING: HTTP/1.1 421 Misdirected Request - 562 bytes in 0.159 second response time |time=0.159360s;;;0.000000 size=562B;;;0

$ check_http -H www.chovits.club -4 -S --sni
HTTP OK: HTTP/1.1 200 OK - 13206 bytes in 0.365 second response time |time=0.364547s;;;0.000000 size=13206B;;;0

Nagiosの設定ファイルで、check_http "--sni" オプションを追加し、nagios再起動してステータスOKとなった。

※ nagios settings ※

define command{
        command_name    check_http_custom
        command_line       $USER1$/check_http -H $ARG1$ $ARG2$
}

define service{
        use                             generic-service
        host_name                  www.chovits.club
        service_description       HTTPSv4
        check_command          check_http_custom!www.chovits.club!-4 -S --sni
}