説明
CloudFrontのデフォルト証明書は、デフォルトのCloudFrontドメイン用です。カスタムドメインでHTTPSを提供するには、その名前を含むカスタム証明書が必要です。
想定される影響
証明書とサービスのドメインが一致しないと、ディストリビューションの設定やクライアントのHTTPS接続が失敗するおそれがあります。
対処方法
証明書にカスタムドメインを含め、viewer_certificateに証明書、ssl_support_method、minimum_protocol_versionを設定してください。証明書はコンテンツへのアクセス権限を制限しないため、非公開コンテンツには別途アクセス制御が必要です。
例
以下はカスタムドメインにACM証明書を関連付ける例です。ACM証明書はus-east-1に配置する必要があります。HTTPS専用のアクセスは、ビューワープロトコルポリシーで別途設定してください。
変更前
hcl
resource "aws_s3_bucket" "example" {
# configs
}
resource "aws_cloudfront_distribution" "example" {
origin {
domain_name = aws_s3_bucket.example.bucket_regional_domain_name
origin_id = local.s3_origin_id
s3_origin_config {
origin_access_identity = "origin-access-identity/cloudfront/ABCDEFG1234567"
}
}
aliases = [var.site_domain]
enabled = true
is_ipv6_enabled = true
comment = "Some comment"
default_root_object = "index.html"
default_cache_behavior {
allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
cached_methods = ["GET", "HEAD"]
target_origin_id = local.s3_origin_id
forwarded_values {
query_string = false
cookies {
forward = "none"
}
}
viewer_protocol_policy = "allow-all"
min_ttl = 0
default_ttl = 3600
max_ttl = 86400
}
restrictions {
geo_restriction {
restriction_type = "whitelist"
locations = ["US", "CA", "GB", "DE"]
}
}
}
変更後
hcl
resource "aws_s3_bucket" "example" {
# configs
}
resource "aws_cloudfront_distribution" "example" {
origin {
domain_name = aws_s3_bucket.example.bucket_regional_domain_name
origin_id = local.s3_origin_id
s3_origin_config {
origin_access_identity = "origin-access-identity/cloudfront/ABCDEFG1234567"
}
}
aliases = [var.site_domain]
enabled = true
is_ipv6_enabled = true
comment = "Some comment"
default_root_object = "index.html"
default_cache_behavior {
allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
cached_methods = ["GET", "HEAD"]
target_origin_id = local.s3_origin_id
forwarded_values {
query_string = false
cookies {
forward = "none"
}
}
viewer_protocol_policy = "allow-all"
min_ttl = 0
default_ttl = 3600
max_ttl = 86400
}
restrictions {
geo_restriction {
restriction_type = "whitelist"
locations = ["US", "CA", "GB", "DE"]
}
}
viewer_certificate {
acm_certificate_arn = aws_acm_certificate_validation.cert.certificate_arn
ssl_support_method = "sni-only"
minimum_protocol_version = "TLSv1.2_2018"
}
}