Route53がCloudFrontのHTTPSレコードに対応したので試してみる-HTTPSレコードって何がうれしいの?-
はじめに
2025年7月1日、タイトルの通りAmazon CloudFront が HTTPS DNS レコードのサポートを発表しました。
HTTPSレコード対応はパフォーマンス面でメリットがあるので嬉しいアップデートです。
本記事ではHTTPSレコードの簡単な解説と、実際にCloudFrontでの設定方法、パフォーマンス比較等を行っていきます。
HTTPSレコードって何?
まずはHTTPSレコードについて簡単に解説します。
HTTPSレコードのメリット理解するためには、いくつか背景情報が必要なので最初に補足します。
「そんなの知ってるよ」という方は読み飛ばしてください。
HTTPにはいくつかバージョンがある
普段利用しているHTTPですが、複数のバージョンが存在しています。
このバージョンをクライアントとサーバでネゴシエートしてから、通信が開始します。
バージョン | 登場年 | 主な特徴 | 課題 |
---|---|---|---|
HTTP/1.0 | 1996年 | 基本的なリクエスト/レスポンス | 接続毎に切断、効率が悪い |
HTTP/1.1 | 1997年 | Keep-Alive、パイプライン | Head-of-Line Blocking |
HTTP/2 | 2015年 | バイナリ、ストリーム多重化 | TCP上での制約 |
HTTP/3 | 2022年 | QUIC(UDP)ベース | 実装・普及の課題 |
ネゴシエーション手法の比較
バージョンをネゴシエートするための方法は大きく3つあり、そのうちの1つがHTTPSレコードです。
他の手法をご紹介したうえで、HTTPSレコードのメリットをご紹介します。
1. ALPN(Application-Layer Protocol Negotiation)
ALPNは、TLSハンドシェイク中にアプリケーション層プロトコルを決定する仕組みです。
ALPNの特徴:
- TLSハンドシェイクと同時に実行
- 追加のラウンドトリップが不要
- HTTP/2の標準的なネゴシエーション方法
2. HTTP Alternative Services
HTTP Alternative Servicesは、通信中に他のプロトコルが利用可能であることを通知する仕組みです。
HTTP/2まではTCP接続だったのでコネクションを再利用できましたが、HTTP/3はUDPベースのため別の方法が必要です。
HTTP Alternative Servicesを利用することで、通信中にHTTP/3でも接続できることをクライアントに知らせることができます。
Alternative Servicesの特徴:
- 次回接続時にプロトコルをアップグレード
- レスポンスヘッダーまたはHTTP/2 ALTSVCフレームで通知
3. HTTPSレコード
HTTPSレコードは、DNS応答でサービス情報とプロトコル対応を事前に通知する比較的新しい仕組みです。
HTTPSレコードの特徴:
- DNS段階でプロトコル情報を取得
- 最初の接続から最適なプロトコルを選択
以上2点より、往復回数を削減することができます。
CloudFront×HTTPSレコードを試してみる
今回はCloudFront+S3のよくある静的コンテンツ配信構成で試してみます。
環境セットアップ
S3バケットの構築とhtmlファイルの配置
まずはS3バケットを作成し、適当なhtmlファイルを置きます。
index.html
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CloudFront HTTPS RR Test</title>
<style>
body { font-family: sans-serif; text-align: center; margin-top: 4rem; }
.info { font-size: 1.2rem; margin-top: 2rem; }
</style>
</head>
<body>
<h1>CloudFront HTTPS Record Test Page</h1>
<p class="info">This is a static HTML file served via CloudFront.</p>
<p class="info">Check HTTP version using browser dev tools or curl.</p>
<script>
// Show protocol if browser supports performance API
if (performance.getEntriesByType) {
const nav = performance.getEntriesByType("navigation")[0];
const protocol = nav.nextHopProtocol;
document.body.insertAdjacentHTML("beforeend", `<p class="info">Protocol used: <strong>${protocol}</strong></p>`);
}
</script>
</body>
</html>
CloudFrontの設定
先ほど作成したS3をオリジンとするディストリビューションを作成します。
HTTPSレコードを利用するにはHTTP/2もしくは/3を有効化しておく必要があります。
Route53の設定
いよいよ目玉のHTTPSレコードの設定です。
AやAAAA同様、HTTPSもAliasレコードで定義できます。
ディストリビューションを選択するだけなので簡単ですね。併せてAレコードも定義しておきます。
アクセスしてみる
では早速digで名前解決してみます。
ANSWER SECTIONに「https.[ドメイン名]. 60 IN HTTPS 1 . alpn="h2,h3"」と対応しているバージョンが返却されていることがわかります。
$ dig https.[ドメイン名] HTTPS
; <<>> DiG 9.18.30-0ubuntu0.22.04.2-Ubuntu <<>> https.[ドメイン名] HTTPS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43798
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;https.[ドメイン名]. IN HTTPS
;; ANSWER SECTION:
https.[ドメイン名]. 60 IN HTTPS 1 . alpn="h2,h3"
;; Query time: 46 msec
;; SERVER: 10.255.255.254#53(10.255.255.254) (UDP)
;; WHEN: Wed Jul 02 14:29:07 JST 2025
;; MSG SIZE rcvd: 78
パフォーマンスを比較してみる
先にも述べている通り、HTTPSレコードは往復回数削減による初期応答の高速化が期待されます。
本当にその効果が出るのか、Aレコードと比較してみましょう。
コマンドは以下の通りです。
10回のウォームアップ後、200回試行しています。
hyperfine \
--runs 200 \
--warmup 10 \
--style full \
'curl -s --http2 https://https.[ドメイン名]/index.html' \
'curl -s --http3 https://https.[ドメイン名]/index.html'
パフォーマンス比較結果
HTTP/3ではHTTPSレコード利用によるパフォーマンスの改善がみられる結果となりました。
HTTPSレコードの優位性が確認できる結果となっています。
指標 | Aレコード | HTTPSレコード | 差分 | HTTPSの優位性 |
---|---|---|---|---|
HTTP/2 平均時間 | 83.7 ms | 83.8 ms | +0.1 ms | ⚪ 差なし |
HTTP/2 標準偏差 | 101.3 ms | 104.1 ms | +2.8 ms | ⚪ 差なし |
HTTP/3 平均時間 | 84.0 ms | 70.8 ms | -13.2 ms | 🟢 15.7%改善 |
HTTP/3 標準偏差 | 38.8 ms | 26.8 ms | -12.0 ms | 🟢 30.9%改善 |
注意事項
本記事で紹介したHTTPSレコードは非常に有用な仕組みですが、導入にあたっては以下の点に注意してください。
-
ブラウザやOSの対応状況に差がある
HTTPSレコードは比較的新しいDNSレコード種別であり、2025年現在も一部の古いブラウザやOSでは正しく処理されない可能性があります(例: 古いiOS Safari、一部のAndroidブラウザなど)。 -
企業ネットワークやファイアウォールでUDP(HTTP/3)が制限される可能性
HTTP/3はUDPベースのため、企業環境や特定のネットワーク設定下では(ファイアウォールルールの定義漏れなどにより)ブロックされてしまう場合があります。事前に利用環境を確認してください。
まとめ
HTTPSレコードの仕組みやメリット、CloudFrontにおけるHTTPSレコードの設定方法等を確認しました。
非常に簡単に設定できるので、影響調査をしたうえで積極的に活用していきたいと思います。
参考
前半部分は以下の書籍を参考にさせていただきました。
HTTPの歴史から周辺知識まで、体系的に理解できるおすすめの一冊です。
「Real World HTTP 第3版 ―歴史とコードに学ぶインターネットとウェブ技術」
Discussion