説明
CloudFront のデフォルト証明書は、デフォルトの cloudfront.net ドメインに使用できます。カスタムドメインで HTTPS コンテンツを配信するには、その名前を含む証明書を関連付ける必要があります。デフォルト証明書の使用自体が認証の迂回やコンテンツの公開を意味するわけではありません。
証明書はドメインの識別と暗号化接続を保護しますが、コンテンツへのアクセス権限は制限しません。非公開コンテンツには、署名付き URL や署名付き Cookie などのアクセス制御が別途必要です。
想定される影響
- カスタムドメインと証明書が一致しないと、HTTPS 接続が失敗する場合があります。
- サービス要件に合わない TLS ポリシーでは、古いプロトコルが許可されるおそれがあります。
対処方法
カスタムドメインを Aliases に登録し、その名前を含む us-east-1 の ACM 証明書の AcmCertificateArn を指定してください。デフォルト証明書の設定を削除し、MinimumProtocolVersion と SslSupportMethod を構成してください。デフォルトの cloudfront.net ドメインを使う場合は、引き続きデフォルト証明書を使用できます。ドメインの一致、証明書の有効期間、クライアントの互換性を確認してください。
例
証明書設定だけを比較する抜粋です。Aliases、オリジン、キャッシュ動作は省略しています。例の ARN を、実際のドメインを含む us-east-1 の証明書 ARN に置き換えてください。
変更前
Resources:
MyDistribution:
Type: AWS::CloudFront::Distribution
Properties:
DistributionConfig:
ViewerCertificate:
CloudFrontDefaultCertificate: true
デフォルトの CloudFront ドメインには有効な選択です。カスタムドメインは認証できず、デフォルト証明書の TLSv1 ポリシーを別の最小バージョンに変更することもできません。
変更後
Resources:
MyDistribution:
Type: AWS::CloudFront::Distribution
Properties:
DistributionConfig:
ViewerCertificate:
AcmCertificateArn: arn:aws:acm:us-east-1:123456789012:certificate/example
MinimumProtocolVersion: TLSv1.2_2019
SslSupportMethod: sni-only
カスタム証明書と TLSv1.2_2019 ポリシーを指定し、クライアントの SNI 対応を必要とします。コンテンツのアクセス制御や HTTP リクエストの遮断を代替する設定ではありません。