CloudFrontがオリジンへのTLS 1.3接続に対応!ALBログで実際の通信を確認してみた
2025年11月20日、Amazon CloudFrontがオリジン接続におけるTLS 1.3のサポートを発表しました。
CloudFrontはViewer(クライアント)との通信では、2020年の時点でTLS 1.3をサポートしていました。
オリジンサーバーとの通信についてはこれまでTLS 1.2が上限となっていましたが、今回のアップデートにより、CloudFront設定を変更することなく、オリジン側が対応していれば自動的にTLS 1.3が選択されるようになりました。
今回、オリジンとしてApplication Load Balancer(ALB)を用意し、実際にCloudFrontとの間でTLS 1.3によるハンドシェイクが行われているかを、実機のログで確認する機会がありましたので、紹介します。
検証環境とアーキテクチャ
CloudFront経由でALBにアクセスし、ALBが出力するアクセスログを確認する構成をとりました。
構成概要
- CloudFront: デフォルト設定(TLS 1.3明示指定なし)
- Origin (ALB): TLS 1.3対応のSecurity Policyを適用
- Log: ALBアクセスログをS3に出力して確認
CloudFormationテンプレート(抜粋)
今回の検証において重要なポイントは、CloudFront側の設定には手を加えないという点です。以下は使用したCloudFormationテンプレートの一部です。
CloudFront Origin設定:
Origins:
- Id: ALBOrigin
DomainName: !GetAtt ApplicationLoadBalancer.DNSName
CustomOriginConfig:
HTTPSPort: 443
OriginProtocolPolicy: https-only
OriginSSLProtocols:
- TLSv1.2
ALB Listener設定:
ALB側では、TLS 1.3をサポートするセキュリティポリシー ELBSecurityPolicy-TLS13-1-2-2021-06 を指定しました。
HTTPSListener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
LoadBalancerArn: !Ref ApplicationLoadBalancer
Protocol: HTTPS
Port: 443
SslPolicy: ELBSecurityPolicy-TLS13-1-2-2021-06
Certificates:
- CertificateArn: !Ref CertificateArn
DefaultActions:
- Type: fixed-response
FixedResponseConfig:
StatusCode: '200'
ContentType: 'text/plain'
MessageBody: 'TLS 1.3 Verification'
動作確認
1. CloudFront設定の現状確認
検証にあたり、CLIでCloudFrontの現在の設定を確認しました。公式ドキュメント通り、OriginSSLProtocols の配列には TLSv1.3 が含まれていない状態です。
$ aws cloudfront get-distribution-config \
--id E1XXXXXXXXXXXX \
--query "DistributionConfig.Origins.Items[0].CustomOriginConfig.OriginSSLProtocols"
{
"Quantity": 1,
"Items": [
"TLSv1.2"
]
}
今後、TLSv1.3の普及により設定値として増える可能性はあると思われますが、記事執筆時点で、設定上は「TLS 1.2」を指定しているにもかかわらず、ネゴシエーションでTLS 1.3が使用されるかどうかが検証の焦点となります。
2. リクエストの実行
curl コマンドを用いてCloudFrontへリクエストを送信しました。
$ curl -v https://dxxxxxxxxxxxxx.cloudfront.net
> GET / HTTP/2
> Host: dxxxxxxxxxxxxx.cloudfront.net
> ...
< HTTP/2 200
< content-type: text/plain
< content-length: 20
< ...
TLS 1.3 Verification
レスポンスが正常に返却されたことを確認しました。しかし、ここでの curl の出力(SSL connection using TLSv1.3 等)は「Client ⇔ CloudFront」間の通信内容であり、今回確認したい「CloudFront ⇔ Origin」間のプロトコルではありません。
3. ALBアクセスログによる裏付け
実際にオリジンとの通信でTLS 1.3が使用されたかを特定するため、S3に出力されたALBアクセスログを調査しました。ログの反映まで5分程度待機した後、以下のコマンドでログを取得・解析しました。
# ログを取得
$ aws s3 sync s3://my-log-bucket-xxxxxxxx/AWSLogs/123456789012/ ./logs/
# 解凍して該当リクエストを検索(CloudFrontからのアクセスのみ抽出)
$ gunzip -c logs/**/*.log.gz | grep "cloudfront.net" | grep "TLS 1.3 Verification"
出力されたログ(抜粋・整形):
https 2025-11-29T17:05:27.234837Z app/alb-test/xxxxxxxxxxxxxxxx
192.0.2.10:12345
- -1 -1 -1 200 - 306 191
"GET https://dxxxxxxxxxxxxx.cloudfront.net:443/ HTTP/1.1"
"Amazon CloudFront"
TLS_AES_128_GCM_SHA256 TLSv1.3
ログの末尾付近にある TLSv1.3 の記述により、CloudFrontとALB間でTLS 1.3による接続が確立されたことを事実として確認しました。また、暗号スイートには TLS_AES_128_GCM_SHA256 が使用されています。
4. 比較検証:TLS 1.2のみの場合
念のため、ALBのポリシーをTLS 1.2のみ(ELBSecurityPolicy-2016-08)に変更した場合の挙動もログで確認しました。
変更後のログ:
... ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2
オリジン側の設定に応じて、CloudFrontが適切にプロトコルをダウングレードして接続していることが分かります。
まとめ
今回の検証により、CloudFrontとオリジン間のTLS 1.3接続について以下の挙動が確認できました。
- CloudFrontの設定変更は不要:
OriginSSLProtocolsにTLS 1.3を指定せずとも、自動的にネゴシエーションが行われる。 - 後方互換性の維持: オリジンがTLS 1.2のみの場合は、自動的にTLS 1.2で接続される。
- ログによる可視化: 接続プロトコルの実態は、CloudFront側ではなくオリジン(ALB/NLB)のアクセスログで確認する必要がある。
今回のアップデートの最大のメリットは、オリジン側の変更だけでセキュリティ強度とパフォーマンス(ハンドシェイクの高速化)が向上する点にあります。CloudFrontの設定変更に伴うリスク(ディストリビューション更新時の影響など)を負うことなく、バックエンドの対応だけで通信品質を高めることが可能です。
現在、CloudFrontのオリジンとしてALB(Application Load Balancer)やNLB(Network Load Balancer)を利用しており、TLS 1.3対応ポリシーを未採用の環境については、TLS 1.3対応ポリシーへの移行をご検討ください。






