LinuCレベル3 セキュリティスペシャリスト セキュアプロトコルによる各種機能の実装 問5
セキュアプロトコルによる各種機能の実装/Web サーバーのセキュリティ強化nginxでHTTP/3を有効にする際の説明として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「セキュアプロトコルによる各種機能の実装」に対応。実際の試験問題ではありません)
- AHTTP/3はTCP上で動くため、既存の listen 443 ssl の行に http3 を追記するだけで有効になり、ファイアウォールの変更も不要である
- BHTTP/3はTLSの代わりに独自の暗号化を使うため、サーバー証明書と秘密鍵の設定は ssl_certificate を含めて不要になる
- CHTTP/3はTLS 1.2でも動作するため、ssl_protocols に TLSv1.2 だけを指定した既存の設定をそのまま流用できる
- DHTTP/3はUDP上のQUICで動くため、listen 443 quic を追加してUDP 443番を許可し、Alt-Svcヘッダーで提供を通知する
正解:D
解説
HTTP/3はトランスポートにQUICを使い、QUICはUDP上で動作します。nginx(1.25系以降の ngx_http_v3_module)では、listen ディレクティブに quic パラメータを付けたUDPの待ち受けを追加し、ファイアウォールでUDPの443番を開ける必要があります。ソースからビルドする場合は --with-http_v3_module を付けて組み込み、複数のワーカーで正しく動かすには listen 443 quic reuseport; のように reuseport も指定します。ブラウザは通常まずTCPのHTTPSで接続するため、Alt-Svcヘッダー(例: h3=":443"; ma=86400)でHTTP/3を提供していることを知らせます。QUICはTLS 1.3のハンドシェイクを組み込んでいるため、証明書は引き続き必要で、TLS 1.3を有効にしておく必要があります。
選択肢ごとの解説
- A誤り。HTTP/3はTCPではなくUDP上のQUICで動くため、UDPの待ち受けの追加とファイアウォールの許可が必要です。
- B誤り。QUICはTLS 1.3を組み込んで暗号化するため、サーバー証明書と秘密鍵の設定は引き続き必要です。
- C誤り。QUICはTLS 1.3を前提としており、TLS 1.2だけを許可した設定ではHTTP/3を提供できません。
- D正しい。quic 付きのlistenでUDPの待ち受けを追加し、UDP 443番の許可とAlt-Svcヘッダーによる通知を行います。