2017-11-08 5 views
1

ブラウザでHTTP/1をhttps内のプロトコルとして使用するようにするには、HTTP/2の使用をブロックするのに問題があります。 TLS MITMの問題は解決されていません.NFQUEUEのようなusermodeパケットフィルタリングは、処理オーバーヘッドに応じて最大で考慮されることがあります。ファイアウォールレベルでHTTP/2をブロックする

ALPN RFCを読むと、ALPNが含まれているClientHelloが表示されているときにアラート応答を提供するか接続を切断するかは不明です。http/2はALPNなしでブラウザを再試行します。

私が正しく理解していれば、ClientHelloを変更するとそのパケットのMACが無効になるため、サーバがServerHelloで応答するときにチェックサムエラーが発生するため、ClientHelloの変更は問題になりません。

ブロックハンドシェイクの動作はw.r.tです。 ALPNはTLSバージョンフォールバックの処理と同じです(TLS_FALLBACK_SCSV?

EDIT:opensslのt1_lib.cによると、サーバがALPNを知らない場合、それは無視されます。したがって、サーバがALPNを含むClientHelloに対してAlertを返す場合は、おそらくTLS1.2をサポートしていないためです。クライアントに「警告」以外の「ALPNなしで再試行してください」というクライアントへの通知方法はありませんTLS1.1を試してみてください。

+0

どのような種類のファイアウォールですか?これが単純なパケットフィルタであれば、HTTP/2のブロックには成功しませんが、とにかくコンテンツを検査しないので、どちらもブロックしないように見えません。これがSSLトラフィックを検査できるファイアウォールの場合、man-in-the-middleとして動作するため、ALPN拡張を自動的に削除してHTTP/1.xへのダウングレードを引き起こす可能性があります。それ以外のところでは、私はこの質問をここでは話題にし、security.stackexchange.comやserverfault.comでの話題についても検討しています。 –

+0

なぜこれをやりたいですか?より良い選択肢があるかもしれないので。また、インバウンドまたはアウトバウンド接続についても話していますか? –

+0

TLS MITMを除外するための質問を編集しました。これはアウトバウンドファイアウォール向けです。 – patraulea

答えて

2

TLSを介したHTTP/2は、ALPNによってネゴシエートされます。

ブラウザは、サポートしていることをサーバーに通知します。

HTTP/2を使用したくない場合は、ALPN経由でネゴシエートできるプロトコルの1つとしてh2がないようにサーバー構成を変更するだけです。

ALPNネゴシエーションはHTTP/1.1に戻り、クライアントはHTTP/1.1を使用します。

+0

これを修正する最も簡単な方法はサーバーの設定ですが、Webサーバーは制御しません。これを明確にするために質問を更新しました。私には分かりませんが、http2またはALPN全体を(発信)ファイアウォールで拒否できるかどうかは、ポリシーをクライアントに送信したり、TLS MITMを実行することなく拒否できます。 – patraulea

関連する問題