#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]]
- [[ストリーム]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS