#author("2024-04-13T11:55:01+09:00;2024-04-13T11:54:32+09:00","default:tanopro","tanopro") #author("2024-04-13T11:57:38+09:00;2024-04-13T11:54:32+09:00","default:tanopro","tanopro") #html{{ <h1 style="color: red; background-color: #FFFFCC; padding: 20px;"> ALPN </h1> <div class="alert alert-warning" role="alert"> Application-Layer Protocol Negotiation </div> }} // 概要 [[TLS]](Transport Layer Security)の拡張の一つ。 //---------------------------------------- #contents //---------------------------------------- *検索 [#kensaku] -ALPN - Google 検索 https://www.google.co.jp/search?q=ALPN *説明 [#setumei] *参考 [#sankou] -Application-Layer Protocol Negotiation - Wikipedia https://ja.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation >Application-Layer Protocol Negotiation (ALPN) は、Transport Layer Security (TLS) の拡張の一つである。 アプリケーション層でのプロトコルネゴシエーションに関する拡張であり、セキュア通信においてアプリケーション層がどの通信プロトコルを使用するのかを決定する際に、余分なラウンドトリップタイムの発生を避け、アプリケーション層のプロトコルに依らずにネゴシエーションを行うことを可能とする。 ALPNは主にSPDYおよびHTTP/2で利用されている。 2021年現在では、ALPACAと命名されたTLSにおけるクロスプロトコル攻撃の対策の1つとして、それ以外のアプリケーションプロトコルでもALPNの利用が推奨されている。 -HTTP/2とは - JPNIC https://www.nic.ad.jp/ja/newsletter/No68/0800.html >ネゴシエーション HTTP/2はフレームというメッセージ形式でメッセージを送信するため、 HTTP/1.1と互換性はありません。 HTTP/2に対応していないサーバにHTTP/2のメッセージを送信しても正しく解釈できないでしょう。 しかし、HTTP/2でもHTTP/1.1と同様に80番ポートと443番ポートを使用します。 そのためHTTP/2通信を開始するためには相手とHTTP/2の使用を合意する必要があります。 仕様ではいくつかの通信開始方法が定義されています。 >1. ALPNを使用する 2. HTTP/1.1からアップグレードする 3. ダイレクトで開始する >一つめのALPNとは、RFC7301 Transport Layer Security(TLS) Application-Layer Protocol Negotiation Extensionで定義されているTLS拡張です。 ALPNでは、図4のようにTLSハンドシェイク中に使用するアプリケーションレイヤプロトコル、 ここではHTTP/2を使用するかどうかのネゴシエーションを行います。 TLSの通信が前提ですので、httpsの場合に使用できます。 &ref(ALPN_HandShake.jpg); *関連 [#kanren] - [[TLS]] - [[HTTP/2]] - [[ストリーム]]