使用新记录验证证书

Posted

技术标签:

【中文标题】使用新记录验证证书【英文标题】:Validate certificate using new record 【发布时间】:2020-10-05 12:12:51 【问题描述】:

我正在尝试使用here 概述的方法在 terraform 中验证 ACM 证书,基本上它是使用 Route53 记录的 DNS 验证。问题是,据我了解,它需要已经存在的 Route53 记录,因此它可以使用资源的 records 属性。但在我的情况下,这是一个正在创建的新记录,所以如果我同时尝试 aliasrecords 属性,例如

resource aws_route53_record wildcard 
  zone_id = var.environment.route53_zone.zone_id
  name    = "*.$local.cname."
  type    = "A"
  alias 
    name                   = aws_cloudfront_distribution.main.domain_name
    zone_id                = aws_cloudfront_distribution.main.hosted_zone_id
    evaluate_target_health = false
  
  records = [aws_acm_certificate.wildcard[0].domain_validation_options.0.resource_record_value]

我收到错误"alias" conflicts with "records"。是否可以在同一脚本中创建 Route53 记录并将其用于证书验证?

【问题讨论】:

【参考方案1】:

您需要使用 aws_acm_certificate_validation 资源,幸运的是,该页面有一个很好的示例说明如何执行此操作。

resource "aws_acm_certificate" "cert" 
  domain_name       = "example.com"
  validation_method = "DNS"


data "aws_route53_zone" "zone" 
  name         = "example.com."
  private_zone = false


resource "aws_route53_record" "cert_validation" 
  name    = "$aws_acm_certificate.cert.domain_validation_options.0.resource_record_name"
  type    = "$aws_acm_certificate.cert.domain_validation_options.0.resource_record_type"
  zone_id = "$data.aws_route53_zone.zone.zone_id"
  records = ["$aws_acm_certificate.cert.domain_validation_options.0.resource_record_value"]
  ttl     = 60


resource "aws_acm_certificate_validation" "cert" 
  certificate_arn         = "$aws_acm_certificate.cert.arn"
  validation_record_fqdns = ["$aws_route53_record.cert_validation.fqdn"]


resource "aws_lb_listener" "front_end" 
  # [...]
  certificate_arn = "$aws_acm_certificate_validation.cert.certificate_arn"

【讨论】:

是的,我正在做类似的事情。我的问题是resource "aws_route53_record" 。此记录是为 CloudFront 分配创建的,因此它使用 alias 属性。与records 属性冲突【参考方案2】:

我意识到用于证书验证的 Route53 记录与用于 CloudFront 分发的 Route53 记录无关。两者都必须创建,每个都有其不同的目的。

【讨论】:

以上是关于使用新记录验证证书的主要内容,如果未能解决你的问题,请参考以下文章

服务器的SSL证书验证失败问题,怎么解决

SSL证书错误啥原因

https证书查看及其验证

OkHttp使用https,忽略证书验证

https证书较验不通过

Terraform 和 AWS:ACM 证书从未经过验证