概要 †
- HTTP/2では、一つのTCPコネクションを使い回し、その中でHTTPリクエストとHTTPレスポンスを多重化することで、複数のHTTPメッセージを上限なく並列的にやりとりすることができる
- 多重化を実現するために、HTTP/2では仮想的な通信単位であるストリームという概念を導入しており、ストリームごとにフレームというメッセージをやりとりする
- HTTP/2では、フレームというバイナリ形式のメッセージをやりとりする
- HTTP/2においてTLSを使用する場合は以下を守る必要がある
- TLS 1.2以上を使用する
- SNI(Server Name Indication)をサポートする
- 仕様で指定される暗号スイートを使用する
- TLSの圧縮機能を無効にする
- TLSの再ネゴシエーションを使用しない
h2, h2c †
h2:HTTP/2 over TLS †
h2c:HTTP/2 over cleartext TCP †
- TLSを用いないで平文(Cleartext)で通信を行う
対応状況 †
ブラウザ †
- 一般的なブラウザは h2 のみに対応しているため、実質的に h2 が必須となっている
- h2 で用いる TLS には以下の要件がある
- TLS のバージョンは 1.2 以上
- SNI 拡張の対応が必要
- クライアントは TLS のネゴシエーションの際に、対象のドメイン名を示す必要がある
- TLS 1.2 の場合は暗号化スイートに以下の要件あり
- RFC 7540 のブラックリストに記載された暗号化スイートを使うべきではない
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 への対応が必須
動作確認事例 †
SPDY †