Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@ktoshi

Terraform で AWS の ALB にサードパーティのSSL証明書を設定する

お久しぶりです @ktoshi です!
4月になり新入社員も入ってきて、初々しかった昔を思い出す今日この頃。
早いもので社会人生活10年目になりました。

普段、GCPを使うことが多いのですが、AWSでサーバを構築する機会があり、
その際、Terraform で持込の証明書を設定するときに少し困ったので備忘録的に書きたいと思います。

概要

EC2 でWebサーバを構築し、その前段に ALB を配置し、 SSL 証明書は ALB に設定する。
AWS Certificate Manager を利用するとマネージドの証明書も利用可能だが、
今回は別途取得した SSL 証明書をインポートして利用する。

環境

OS

$ cat /etc/redhat-release
CentOS Linux release 8.3.2011

Terraform

$ terraform version
Terraform v0.14.3

Let's Enjoy!!

今回は証明書を設定する、という目的なので、EC2などの設定は省きます。
なお、SSL証明書・中間証明書・秘密鍵を事前にサーバ上に保存しておいてください。

証明書のインポート

証明書の内容を直接書き込むこともできますが、
今回はファイルを参照して読み込むようにします。

certificate.tf
resource "aws_acm_certificate" "certificate" {
  certificate_body = file("example.com.crt") # SSL証明書
  certificate_chain = file("example.com.dvcacert.pem") # 中間証明書
  private_key      = file("example.com.rsa.key") # 秘密鍵
}

なお、中間証明書はなくても設定可能です。

ALB への紐づけ

SSL証明書はHTTPS用のリスナーに紐づけます。
※ 下記はALBを作成する設定の一部です。

alb.tf
# ALB の設定
resource "aws_lb" "alb" {
  name_prefix                       = "alb-"
  security_groups            = [aws_security_group.lb-sg.id]
  subnets                    = [aws_default_subnet.default-1a.id,aws_default_subnet.default-1c.id,aws_default_subnet.default-1d.id]
  internal                   = false
  enable_deletion_protection = false
  load_balancer_type = "application"
}

# リスナーの設定
resource "aws_lb_listener" "https_listener" {
  load_balancer_arn = aws_lb.alb.arn
  port              = "443"
  protocol          = "HTTPS"
  ssl_policy        = "ELBSecurityPolicy-2016-08"

  # 先ほどインポートしたSSL証明書を指定
  certificate_arn   = aws_acm_certificate.certificate.arn

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

まとめ

AWS ではフルマネージドのSSL証明書が利用でき、
運用を楽にすることができますが、サイトによってはサードパーティーから発行されるより高レベルな証明書が必要になる場合があります。
その場合は AWS Certificate Manager で利用できるようにインポートする必要がありますので、
その際にこの記事をご参考いただければと思います。

それではみなさんも素敵な証明書ライフを…!

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ktoshi
一度やったことを二度やりたくない精神をもって生きたいです。 GCP Professional Cloud Architect/ GCP / Laravel / PHP / golang / python / kubernetes / terraform / Ansible / CI/CD
x-trans
AWS、GCP、Azureの導入設計、環境構築、運用・保守までサポートするエンジニア軍団

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?