アプリケーション層のTLSネゴシエーションの改善はJava 8にバックポートされた。それはこれらのクライアントがHTTP/2のネットワーク機能を利用できるようになった。以前、この機能はJava 9以降で利用可能だった。
この変更は、古いクライアントに対する重要な機能強化だ。New Relicの最近の「State of Java」というレポートによれば、85%のシステムがJava 8で動いていることが分かっている。当初Java 9とともにJEP 244としてリリースされたこのバックポートは、Java 8ファミリ内でアップデートされたクライアントが、 HTTP/2トラフィックを要求するJava以外の最新システムと通信することを可能にした。アップデートがなければ、これらのクライアントは古いTLS機構を使用せざるを得なくなるか、サーバ側アプリケーションは新しいアプリケーションプロトコルをサポートするためにその前にSSL終端を必要とするだろう。KeyCDNは、Application Layer Protocol Negotiationがどのように動作するかの図解を公開した。
それぞれの技術は数年前から多くの本番システムで利用されている。
- 2014年3月にJava 8は最初にリリースされた。
- 2015年5月にHTTP/2は標準化された。
- 2017年9月にこの機能を含むJava 9はリリースされた。
HTTP/2はSPDYと呼ばれるGoogle主導の取り組みの上に構築されている。基盤となるSPDYはJava 8の時間枠の中で利用可能であったが、 Java 9の時間枠まで公式な業界標準は存在しなかった。HTTP/2以前は、SPDYはGoogle主導の活動であり、予告なしの変更やキャンセルを仮定していた。クラウド担当アナリストのCorey Quinn氏はオンラインディスカッションなどの製品をGoogleがサポートしていることについて皮肉を言った。「Google Meet、Hangouts、Duo、Allo、Talk、Hangouts Chat、GTalk、Buzz、Wave、Messages、Spaces、Voiceなどの代わりとして、Zoomがビデオ会議のデファクトソリューションなのは理解できない」Google Meet以降の各アイテムは、中止されたGoogleチャットサービスだ。Quinn氏は続いて、Googleの 「G」 ロゴに悪意のあるガチョウの写真を掲載し「意図的にものを非推奨にする。あなたは恐ろしいガチョウです」と述べた。HTTP/2プロトコルを主に引っ張ってきたGoogleは、標準を策定した同業他社との適切な調整を経てから、SPDYを廃止した。その機能はその後のJavaのメジャーリリースに含まれた。
Application Layer Protocol Negotiationにより、クライアントアプリケーションとサーバアプリケーション間の圧縮が向上する。それはclient helloハンドシェイク中に適切なプロトコルで交換およびデコードできる。
TLSの内部動作に慣れていない開発者は、セキュリティの赤、黄、緑の指標を提供するようにHardernizeなどのさまざまなオンラインツールを利用できる。TLSとアルゴリズムの設定の個々の実践に焦点を当てるのではなく、これらのツールは、サーバの応答とTLSハンドシェイク情報を評価して、他の問題を特定する。他の問題とは、たとえば、アルゴリズムの可用性、証明書のキー強度、HTTPヘッダー、またはサーバー管理者やセキュリティの専門家が関心を持つその他のソースなどだ。
TLSの改善を活用しようとしている運用チームは、AdoptOpenJDKのようなJava 8を公開しているプロバイダを通じてバックポートを得ることができる。この機能の活用を検討している開発チームは、「From Java 8 to 11」というMicrosoftのガイドに従う必要がある。