#author("2020-10-22T06:33:15+00:00","default:admin","admin") #author("2020-11-18T02:03:48+00:00","default:admin","admin") -[[HTTP/2とは:https://www.nic.ad.jp/ja/newsletter/No68/0800.html]] -[[普及が進む「HTTP/2」の仕組みとメリットとは:https://knowledge.sakura.ad.jp/7734/]] -[[【図解】HTTP/2って?HTTP/1.1との違いと導入メリット・課題まとめ:https://www.kagoya.jp/howto/webhomepage/http-2/]] -[[実はHTTPSは速い!次世代プロトコル”HTTP/2″でサイト表示が高速化:https://www.idcf.jp/rentalserver/aossl/basic/response/]] -[[「HTTP/2通信されているか?」をブラウザで手軽に判別する方法:https://nelog.jp/http2-browser-extensions]] *概要 [#fdc0b446] -HTTP/2では、一つのTCPコネクションを使い回し、その中でHTTPリクエストとHTTPレスポンスを多重化することで、複数のHTTPメッセージを上限なく並列的にやりとりすることができる -多重化を実現するために、HTTP/2では仮想的な通信単位であるストリームという概念を導入しており、ストリームごとにフレームというメッセージをやりとりする -HTTP/2では、フレームというバイナリ形式のメッセージをやりとりする -HTTP/2においてTLSを使用する場合は以下を守る必要がある --TLS 1.2以上を使用する --SNI(Server Name Indication)をサポートする --仕様で指定される暗号スイートを使用する --TLSの圧縮機能を無効にする --TLSの再ネゴシエーションを使用しない **h2, h2c [#q0647dcc] -[[HTTP/2: ちょっと詳細: プロトコルネゴシエーション編:https://qiita.com/kitauji/items/3bf03533895251c93af2]] ***h2:HTTP/2 over TLS [#kd5d123a] -TLS を用いた暗号化通信を行う ***h2c:HTTP/2 over cleartext TCP [#h25b727e] -TLSを用いないで平文(Cleartext)で通信を行う **対応状況 [#z242ef5d] -[[Implementations - http2-spec:https://github.com/httpwg/http2-spec/wiki/Implementations]] ***ブラウザ [#q5ec960f] -一般的なブラウザは h2 のみに対応しているため、実質的に h2 が必須となっている -h2 で用いる TLS には以下の要件がある --TLS のバージョンは 1.2 以上 --SNI 拡張の対応が必要 ---クライアントは TLS のネゴシエーションの際に、対象のドメイン名を示す必要がある --TLS 1.2 の場合は暗号化スイートに以下の要件あり ---RFC 7540 のブラックリストに記載された暗号化スイートを使うべきではない ---TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 への対応が必須 *動作確認事例 [#pd1f7465] -[[Apache 2.4系でHTTP/2対応サーバを構築してみるテスト。:https://http2.try-and-test.net/debug.html]] *SPDY [#x3f13aa6] -[[Google、「SPDY」終了と「HTTP/2」サポートを発表:https://www.itmedia.co.jp/news/articles/1502/10/news060.html]] -[[解説!SPDYから進化を遂げたHTTP/2の概要と特徴:https://www.sakurasaku-labo.jp/blogs/http2-beginners]]