問題タブ [alpn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3339 参照

java - ALPN を使用して SPDY で Jetty を実行するには?

Jetty と SPDY を使用して JDK8 に戻りましたが、Jetty 9.2 が NPN の代わりに ALPN プロトコルをサポートしていることがわかります (私の質問How to run Jetty with SPDY on JDK8? を参照してください)。だから私は設定しましたbootclasspath

しかし今、私は例外を得ました:

私はjava version "1.8.0_05"桟橋9.2.2.v20140723を使用しています。

JDK 1.7 とalpn-boot-7.0.0.v20140317.jarWinXP で同じエラーが発生しました。-Xbootclasspath/p:c:/jars/npn-boot/npn-boot-1.1.7.v20140316.jar

この execption は、私のコードで次を指しています。

ALPN jetty でも npn-boot のクラスが必要なようです。それはバグですか、それとも何か間違ったことをしましたか?

0 投票する
1 に答える
352 参照

java - Jetty SPDY で ALPN を使用してクライアント証明書を操作するにはどうすればよいですか?

SPDY を Jetty で使用すると、クライアント証明書に問題が発生します。

NPNで作業し、Jetty SPDYサーバーを次のように起動すると機能します。

baseRequest.getHttpChannel()それが使用するので、次のようなSSLプロパティとクライアント証明書を次のようなコードでorg.eclipse.jetty.spdy.server.http.HttpChannelOverSPDY読み取ることができます:SSL_SESSION_ID

しかし、NPN は Java8 のオプションではありません (私の質問How to run Jetty with SPDY using ALPN? を参照してください)。Java8 では、次のような ALPN プロトコルを使用する必要があります。

このコードを使用nullして、SSL関連の.xmlを取得したいときに取得しましたjavax.servlet.request.*。それbaseRequest.getHttpChannel()org.eclipse.jetty.server.HttpConnection$HttpChannelOverHttpです。

クライアント証明書を使用するには何を変更する必要がありますか?

0 投票する
1 に答える
1547 参照

http - Jetty 9.3 SSL-ALPN-HTTP2 エラー ERR_EMPTY_RESPONSE (HTTPS のみ)

Jetty 9.2 HTTP/1.1 + SSL のみのサーバー (組み込み) を Jetty 9.3.0 (v20150612) HTTP/HTTPS 2.0 (SLL(TLS)-ALPN-HTTP/2) にアップグレードしました。JRE 8 (Oracle 1.8.0 Build 45 - b15) と Eclipse を使用しています。

* JOAKIM の回答によって解決された問題: 解決策については投稿の最後を参照してください *

アップグレード前は、HTTP と HTTPS は正常に機能していましたが、Jetty 9.3 Jar ファイルで再構築するだけで正常に機能していました。次に、SSL(TLS)-ALPN-HTTP/2-HTTP/1.1 を組み込むようにコードをアップグレードしました (見つけた例から学びました)。私が使用した主な例は 、コード付きのこのリンクにあります

Google Chrome (バージョン 43.0.2357.130 m) ブラウザは、http:// 10.32.1.110:8080/ などの http 要求で正常に動作し、Web ページが表示されます。しかし、2 番目のタブを開いて https:// 10.32.1.110:8443/ を試すと、エラー ERR_EMPTY_RESPONSE が表示されます。しかし、webtide.com に接続して https セッションを取得することはできます。私のシステムのファイアウォールの干渉は排除されました。10.32.??? 接続は、失敗した HTTPS の場合と同様に、動作中の HTTP についてもそれを渡しません。

このエラーは Jetty サーバーをブロックしません (サーバーはエラーをスローしたり、ログに記録したりしません)。最初のブラウザー タブに戻って Web ページのリクエストを続行すると、更新されていることがわかります (タイムスタンプがあり、その中のカウンター)毎回。

HTTPS の場合、私の handle() メソッドは Jetty によって呼び出されず (それを監視するためのログ行があります)、HTTP リクエストのみが handle() メソッドに入っていることがわかります。私の handle() に到着する http リクエストは、Jetty リクエスト オブジェクトによると、タイプ HTTP/1.1 です。私の調査によると、Google Chrome は SSL/ALPN なしでは HTTP/2 を実行しないため、これは正常です。

HTTPS リクエストが ERR_EMPTY_RESPONSE になる理由として、SSL と ALPN の問題の方向で考えてきました。alpn-api-1.1.2.v20150522.jar が「-Xbootclasspath/p:D:\Users\TWO\DATA\Eclipse\alpn-api-1.1.2」として Eclipse VM 引数 (JVM ブート クラスパスに相当) に追加されます。 .v20150522\alpn-api-1.1.2.v20150522.jar" それ以来、Jetty は ALPN が JVM ブート クラスパスにないことについて不平を言うことはありません (以前のようにエラーをスローすることによって)。以下の Jetty ログから、SLL と HTTP/2 も正しく開始されています。

Jetty サーバーは、次のログで正常に起動します。

関連する Java サーバー コードは次のとおりです。

gregw のリクエストで、上のリンクにあるサンプル コードを試してみました。SslContextFactory のキーストアへのパスのみを変更しました。私はいつも同じキーストア ファイルを使用しています。なぜなら、それで問題ないことがわかっているからです (投稿の冒頭を参照してください - 私の古い HTTP/1.1+SLL は機能し、同じキーストアを使用していました。

http でのアクセスは機能しますが、https では機能せず、ブラウザーは ERR_EMPTY_RESPONSE を再度表示します。

IExplorer 11 を使用してみました。同じ結果です。404 (このページが見つかりません) と混同しないように、https (msg = このページは表示できません) ではなく http で機能します。IE とは対照的に、Chrome では greg のコードが http で使用されたときに「Cookie」警告が表示されましたが、https では表示されませんでした。

上記の問題を解決する方法を知っている人はいますか。ティア

* 解決 *

Joakim の提案に従って、alpn-api-1.1.2.v20150522.jar の代わりに alpn-boot-8.1.3.v20150130.jar をブート クラスパスに追加しました。テストの結果、次の組み合わせが完全に機能しました。

  • HTTP/1.1 (HTTP) - Google Chrome で実行
  • HTTP/1.1 (HTTP) - IE での 2 回目の試行

  • HTTP/2.0 + SSL (HTTPS) - Google Chrome で実行

  • HTTP/1_1 + SLL (HTTPS) - IE で実行

  • HTTP/2_0 (HTTP) - 迅速なユーザー エージェントがないため、テストしませんでした。

これらは私が興味を持っている唯一の将来の組み合わせですが、SSL を使用した HTTP/2_0 も機能すると確信しています。

このJetty ドキュメント リンクは、別の JRE で同じ問題が発生した場合に使用する JRE バージョンと ALPN JAR ファイル バージョン間の表を示しています。

これを解決するために努力してくれたすべての人に感謝します。

0 投票する
3 に答える
1973 参照

c# - How to implement TLS-ALPN in .NET C# for a HTTP/2 server

does anyone know, how I can implement the TLS-ALPN in .NET?

I've implemented a basic HTTP/2 server, but without TLS encryption. I searched in google, but I only found resources for C, Java or other languages, but nothing for .NET (C#)

0 投票する
1 に答える
1768 参照

http2 - ALPN サポートなしで http/2 サーバーを実装できますか?

このようにして、クライアントは ALPN なしでサーバーに接続し、http/2 デフォルトを使用できます。

可能ですか?</p>

0 投票する
1 に答える
482 参照

okhttp - NPN ネゴシエーションを介して OkHttp で http/2 リクエストを送信できますか?

Android 5.0 以降では、OkHttp が ALPN 経由で h2 をサポートしていることに気付きました。

ある記事から、http/2 リクエストに NPN ネゴシエーションを使用できることを知りました。

NPN ネゴシエーションを介して OkHttp で http/2 リクエストを送信できますか?

Android 4.1+でh2をサポートし、ネットワークパフォーマンスを向上させることができます:-D

0 投票する
0 に答える
592 参照

java - NETBEANS で ALPN を使用して SPDY で Jetty を実行するには?

Netbeans で ALPN を使用して SPDY で Jetty を実行する方法はありますか? 使用しようとしていますが、コンソールに次のメッセージが表示されます。

2015 年 11 月 14 日 4:40:01 PM com.squareup.okhttp.internal.Platform$JdkWithJettyBootPlatform

getSelectedProtocol 情報: ALPN コールバックが削除されました: SPDY と HTTP/2 が無効になっています。alpn-boot はブート クラス パスにありますか?

netbeans プロジェクトで JDK 8u66 と alpn-boot-8.1.6.v20151105.jar を使用しています

したがって、CMD でこのコマンド java -Xbootclasspath/p:を使用しようとすると、次のようになります。

しかし、何も起こらないか、メイン クラスを実行できず、その理由がわかりません。

このコマンドは、Jetty Web サイト自体から取得します。

http://www.eclipse.org/jetty/documentation/current/alpn-chapter.html

そして、私はTest.classでこのコードを使用しています

このコードは、HTTP/2 をサポートする OKhttp テクノロジーを使用しています。このコードの主な目的は、一部の Web サイトが HTTP/2 を使用しているかどうかを検出することです。

0 投票する
1 に答える
635 参照

java - ALPN を Java 7 に追加する方法

Java 7 アプリケーションのブート クラス パスに ALPN を追加することは可能ですか? はいの場合、どうすればそれを行うことができますか?

インターネット上には、Java 8 と Undertow、Tomcat、Jetty などを介してそれを行う方法を示す多くのサンプルがあります。

VM にセキュリティ ライブラリを追加する必要がありますか? Java 8にはすでにそれらが含まれているようです。