ACM을 이용한 HTTPS 설정

ACM 생성 (via 콘솔)

  • ACM은 AWS에서 무료로 제공해주는 SSL Certificate 인증서 솔루션입니다. 본인이 가지고 있는 도메인에 대해서는 Certificate를 자유롭게 생성하실 수 있습니다.

  • ACM도 테라폼으로 생성해도 되지만, 인증서의 경우에는 자동 Renewal 되기도 하고, 한 번 만들면 수정하는 경우가 거의 없기 때문에 콘솔에서 생성하셔도 무방합니다.

1) 콘솔에서 Request a certificate 를 클릭하셔서 생성을 시작합니다.

2) 인증서에 등록할 도메인을 적습니다. 만약 example.com 으로 끝나는 모든 도메인에 대해서 하고 싶다고 하면, *.example.com 으로 적으시면 됩니다. 단, 해당 도메인은 본인 소유여야 합니다.

3) 원하는 인증 방식을 선택합니다. DNS 인증 방식의 경우에는 DNS 레코드를 Route 53에 등록하셔야 합니다!

4) Issued 가 될 때까지 기다리시면 됩니다!

ACM 적용

이제 만들어놓은 ACM을 적용해보겠습니다.

service.tf 파일에 아래와 같이 값을 넣습니다.

  • acm_external_ssl_certificate_arn : 위에서 생성한 ACM의 ARN

  • 위 변수명은 원하시는대로 변경하셔도 됩니다. 단, 변경하신 이름을 반드시 _modules/hello/variables.tf 에 등록해주셔야 합니다.

  # Route53 variables
  acm_external_ssl_certificate_arn  = "arn:aws:acm:ap-northeast-2:816736805842:certificate/9d4a371f-80c5-4087-9cb5-b2636f554da7"

해당 변수는 모듈에서 사용하기 때문에 모듈에 같은 이름의 variable을 정의해주셔야 합니다.

variable "acm_external_ssl_certificate_arn" {
  description = "ssl cert id"
  default     = ""
}

이후에 해당 SSL을 등록하기 위해서 443번 포트로 요청을 받을 타켓 그룹을 생성하고, 해당 타켓 그룹에 위 ACM을 등록합니다.

#################### Listener for HTTPS service
resource "aws_lb_listener" "external_443" {
  load_balancer_arn = aws_lb.external.arn
  port              = "443"
  protocol          = "HTTPS"

  # If you want to use HTTPS, then you need to add certificate_arn here.
  certificate_arn   = var.acm_external_ssl_certificate_arn

  default_action {
    target_group_arn = aws_lb_target_group.external.arn
    type             = "forward"
  }
}

Last updated