ELB - SSL Certificates

What is SSL?

  • An SSL Certificate allows traffic between your clients and your load balancer to be encrypted in transit (in-flight encryption).

  • SSL refers to Secure Sockets Layer, used to encrypt connections.

  • TLS refers to Transport Layer Security, which is a newer version.

  • Nowadays, TLS certificates are mainly used, but people still refer as SSL.

  • Public SSL certificates are issued by Certificate Authorities (CA)

  • Comodo, Symantec, GoDaddy, GlobalSign, DigiCert, Letsencrypt, etc.

  • SSL certificates have an expiration date (you set) and must be renewed.

Load Balancer - SSL Certificates

  • The load balancer uses an X.509 certificate (SSL/TLS server certificate)

  • You can manage certificates using ACM (AWS Certificate Manager)

  • You can create upload your own certificates alternatively.

  • HTTPS listener:

    • You must specify a default certificate

    • You can add an optional list of certs to support multiple domains

    • Clients can use SNI (Server Name Indication) to specify the hostname they reach

    • Ability to specify a security policy to support older versions of SSL / TLS (legacy clients)

Classic Load Balancer (v1)

Support only one SSL certificate

• Must use multiple CLB for multiple hostname with multiple SSL certificates •

Application Load Balancer (v2)

Supports multiple listeners with multiple SSL certificates

• Uses Server Name Indication (SNI) to make it work

Network Load Balancer (v2)

Supports multiple listeners with multiple SSL certificates

• Uses Server Name Indication (SNI) to make it work

SSL – Server Name Indication (SNI)

Only works for ALB & NLB (newer generation), CloudFront

Does not work for CLB (older gen)

  • SNI solves the problem of loading multiple SSL certificates onto one web server (to serve multiple websites)

  • It’s a “newer” protocol and requires the client to indicate the hostname of the target server in the initial SSL handshake.

  • The server will then find the correct certificate or return the default one.

Last updated