3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

お久しぶりです @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 で利用できるようにインポートする必要がありますので、
その際にこの記事をご参考いただければと思います。

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

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?