1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFrontがRoute 53のHTTPSレコードをサポートしたので、設定してみた

Posted at

はじめに

AWS CloudFront が Amazon Route 53 の HTTPS DNS エイリアスレコードをサポートしました。これにより接続クライアントは、DNS による名前解決フェーズで HTTP プロトコルを見つけることができます。従来の DNS レコードと HTTPS レコードによる名前解決と接続確立フローの違いや脆弱性の軽減については、参考情報にあげている AWS ブログが参考になります。
この記事では、実際に自分の Web サイトで使用している CloudFront と Route 53 の HTTPS レコードを設定してみます。

エイリアスレコードを使用しない場合は、Amazon Route 53 で新しくサポートされた HTTPS リソースレコードで HTTP/3 対応を DNS レベルで最適化してみたの記事が参考になります。

参考情報

環境構築

Route 53 のエイリアス HTTPS レコードを有効にするためには、CloudFront ディストリビューションの設定を行います。その後、Route 53 の HTTPS DNS エイリアスレコードを作成します。

CloudFrontディストリビューションの設定

CloudFront ディストリビューションの設定を行います。 Supported HTTP Versions で HTTP/2 または HTTP/3 、もしくはその両方を有効にします。ここでは、両方を有効にしました。

CloudFrontディストリビューションの設定

Route 53 のエイリアスレコードの作成

Route 53 のエイリアスレコードを作成します。CloudFront ディストリビューションの設定で HTTP/2 または HTTP/3 、もしくはその両方が有効になっていると、Route 53 の HTTPS DNS エイリアスレコードを作成できます。

入力内容:

  • レコード名: 空 (サブドメインなしの rev-system.net に対して HTTPS DNS エイリアスレコードを作成するため)
  • レコードタイプ: HTTPS
  • エイリアス: 有効
  • トラフィックのルーティング先: CloudFront ディストリビューションへのエイリアス
  • ルーティングポリシー: シングルルーティング

設定を保存すると、Route 53 の HTTPS DNS エイリアスレコードが作成されます。

Route53のエイリアスレコードの作成

確認

❯ dig rev-system.net HTTPS +noall +answer
rev-system.net.         60      IN      HTTPS   1 . alpn="h2,h3"

HTTPS DNS レコードフォーマットは以下のようになります。

<domain> <TTL> IN HTTPS <priority> <target> <parameters>

今回の設定では、それぞれ以下のようになります。HTTP/2 と HTTP/3 を有効にしているので、parameters は alpn="h2,h3" となります。たとえば、HTTP/2 のみを有効にした場合は、 alpn="h2" となります。参考記事では TTL:キャッシュ時間 (秒単位) (300-86400) となっていますが、Route 53 のエイリアスレコードの TTL は 60 秒固定で変更はできません。

  • domain: rev-system.net.
  • TTL: 60
  • priority: 1
  • target: .
  • parameters: alpn="h2,h3"

HTTPS レコードに対応していないクライアント対策

参考記事内の CloudFront HTTPS DNS レコードと HTTP/3:安全な名前解決と接続確立フロー にあるように、接続クライアントは HTTPS と A/AAAA レコードで問い合わせを行います。そのため、HTTPS レコードでの名前解決に失敗した場合あるいは未対応のクライアントは、A/AAAA レコードで名前解決を行います。2022年の IIJ Engineers blog の記事でも同様の記載があります。
HTTPS レコードによる名前解決に対応していない接続クライアントや DNS キャッシュサーバーを考慮する場合は、従来通り A/AAAA レコードも併記する必要があります。

例:

❯ dig rev-system.net A +noall +answer
rev-system.net.         60      IN      A       143.204.80.27
rev-system.net.         60      IN      A       143.204.80.114
❯ dig rev-system.net AAAA +noall +answer
rev-system.net.         60      IN      AAAA    2600:9000:2138:9c00:4:cea:ca40:93a1
rev-system.net.         60      IN      AAAA    2600:9000:2138:de00:4:cea:ca40:93a1

まとめ

CloudFront ディストリビューションに Route 53 の HTTPS DNS エイリアスレコードを設定し、名前解決の結果を確認しました。CloudFront ディストリビューションの Supported HTTP Versions の設定により、HTTPS DNS エイリアスレコードを作成できました。
HTTPS レコードに対応していない接続クライアント対策もあるため、大きな影響なく HTTPS レコードを導入できるのではないでしょうか。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?