【アップデート】CloudFrontでセッション再開にTLSv1.3のサポートを開始しました!!

AWS

2022.7.14

Topics

どうも、yasujunです。
AWSの最新記事を閲覧したときに、CloudFrontでセッション再開にTLSv1.3サポートを開始とあったので、興味を持ち、記事にしてみました。
TLSv1.3のセッション再開がなんなのかよく分かってなかったので、そういったところ含めて書いていこうと思います。
最後にopensslコマンドでセッション再開を検証してみます。

この記事で分かること

  • CloudFrontでTLSv1.3のセッション再開機能が新しく追加されたので、使い方と使うメリットについて分かる
  • TLSv1.3のセッション再開についてざっくり理解する

従来のTLSがTLSv1.3になって何が変わったか

変更点は色々ありますが、その中の一つとしてセッション再開の方式がPSK接続に変わったことです。
今回は、CloudFrontがTLSv1.3のセッション再開をサポートし始めたということで、セッション再開についてフォーカスしていきます。

セッション再開とは

TLSは暗号通信が始まるまで、ハンドシェイクの時間がかかってしまいます。
それを改善するために同じブラウザで、1回目の接続情報をキャッシュして2回目以降の接続の高速化を図る機能です。
バージョンによってセッション再開の方式が異なり、Session ID、Session Ticket、PSK接続などが挙げられます。
TLSv1.3はPSK接続を使ってセッションを再開します。
※PSK接続とは
再開前に共有した暗号方式をもとに事前共有鍵を共有し、その鍵を利用して、TLS接続を確立する方法です。

CloudFrontでTLSv1.3を使用することで期待できること

以前もCloudFrontはTLSv1.3に対応していましたが、TLSセッションの再開時に時間がかかっていました。
それが今回のアップデートのセッション再開をサポートしたことで、2回目からセッションを接続した相手に対して最大50%の速度向上が期待できます。
今回のアップデートの素晴らしいところは、プロトコル機能のアップデートなので無料で性能が上がり、かつ追加の設定が不要なところです。
例えば、AWSのサービスで新しいインスタンスタイプがアップデートされた場合等は、現在使っているインスタンスをそのアップデートしたインスタンスに変えるために、設定変更や料金の追加などコストがかかりますが、今回のCloudFrontのアップデートは既に使っている方は設定不要のまま、料金がかからずに、性能を向上させることができます。
他にも、初回時のフルハンドシェイクに必要な通信の往復数が減ったため、最大30%の速度向上という利点が期待できます。

参照URL:https://aws.amazon.com/jp/about-aws/whats-new/2022/06/amazon-cloudfront-supports-tls-1-3-session-resumption-viewer-connections/

CloudFrontのTLSv1.3のセッション再開機能を使うには

CloudFront側でカバーしてるTLSのバージョンが広いため、クライアントのブラウザがTLSv1.3に対応していれば問題ないです。
yasuda-aws-tlssupport
CloudFrontからTLSの設定をする場合は、上限値ではなく下限値で指定できます。(アップデートしてないブラウザなどにも対応するためです)
yasuda-policy
上記から、クライアントのブラウザが対応しているTLSのバージョンに合わせてCloudFrontが一番新しいTLSのバージョンに合わせてくれます。

TLSv1.3を古いOpenJDKに利用している方への注意点

TLSv1.3を古いOpenJDKに利用している場合は新しいものにアップデートすることをAWSが強くすすめています。
古いOpenJDKは、クライアントがセッション再開の実行をする際に接続不良が起こるという報告がOpenJDKの公式ページの報告サイトに上がっているからです。
参照URL:https://bugs.OpenJDK.org/browse/JDK-8211806

TLSv1.3でセッション再開を使っているか検証してみた

※前提としてCloudFrontは構築済みとする
ステップとして、
1. 対象ドメインのサーバをCloudFrontがホストしているか確かめるために、Curlで確認します。
yasuda-curl
2. openssl s_client -connect cf.freestoker1.tk:443 -tls1_3でTLSv1.3であることとResumption PSKを確認します。

実行結果としてResumption(再開)にPSKを使っていることが立証できたので検証完了です!

yasujun

インフラの勉強と趣味の武道をバランス良く両立していきたいエンジニアです。 よろしくお願いいたします!

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら