Ensure that Elastic Load Balancer(s) uses SSL certificates provided by AWS Certificate Manager

ID

elb_ssl

Severity

high

Vendor

AWS

Resource

Amazon Neptune

Tags

reachable

Description

Ensuring that your Elastic Load Balancers use SSL certificates provided by AWS Certificate Manager enhances the security, reliability, and manageability of your web applications and services.

It simplifies certificate management, reduces security risks, and ensures compliance with industry standards while minimizing costs and administrative overhead.

Using ACM certificates is a best practice for securing your applications on AWS.

Examples

Buildtime

Terraform

resource "aws_elb" {
  name               = "terraform-elb"
  availability_zones = ["us-west-2c"]

  listener {
    instance_port     = 8000
    instance_protocol = "http"
    lb_port           = 80
    lb_protocol       = "http" (1)
  }

  health_check {
    healthy_threshold   = 2
    unhealthy_threshold = 2
    timeout             = 3
    target              = "HTTP:8000/"
    interval            = 30
  }

  instances                   = [aws_instance.foo.id]
  cross_zone_load_balancing   = true
  idle_timeout                = 400
  connection_draining         = true
  connection_draining_timeout = 400
}
1 SSl is not configured for this listener.

Mitigation / Fix

Buildtime

Terraform

resource "aws_elb" {
  name               = "terraform-elb"
  availability_zones = ["us-west-2c"]

  listener {
    instance_port      = 8000
    instance_protocol  = "http"
    lb_port            = 443
    lb_protocol        = "https"
    ssl_certificate_id = "arn:aws:iam::16452115:server-certificate/certificate_name" (1)
}

  health_check {
    healthy_threshold   = 2
    unhealthy_threshold = 2
    timeout             = 3
    target              = "HTTP:8000/"
    interval            = 30
  }

  instances                   = [aws_instance.foo.id]
  cross_zone_load_balancing   = true
  idle_timeout                = 400
  connection_draining         = true
  connection_draining_timeout = 400
}
1 Ensure you have configured an SSL certificate.