Enabling HSTS in AWS ELB application load balacer
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Enabling HTTP Strict Transport Security (HSTS) in an AWS Application Load Balancer (ALB) is a crucial step in enhancing the security of your web applications. HSTS ensures that all communications between client and server are transmitted over HTTPS, effectively preventing man-in-the-middle attacks and cookie hijacking. This article provides a comprehensive guide on enabling HSTS in AWS ELB ALB, including technical explanations, configuration steps, and additional details for a better understanding.
Understanding HSTS
HTTP Strict Transport Security (HSTS) is a web security policy mechanism that helps protect websites against some passive and active network attacks. By instructing web clients (browsers) to enforce secure (HTTPS) connections, HSTS plays a significant role in strengthening site security.
How HSTS Works
When a web server returns a response with an HSTS header, the browser is notified that all future requests should use HTTPS for a specified period. The basic syntax for an HSTS header is:
- `max-age`: Specifies the time, in seconds, the browser should remember that this site is only to be accessed using HTTPS.
- `includeSubDomains`: (Optional) If present, this directive applies the rule to all subdomains.
- `preload`: (Optional) Allows the site to be included in browsers' preload lists.
- You have an existing Application Load Balancer.
- Your ALB is configured to support HTTPS with a valid certificate via AWS Certificate Manager (ACM).
- Create a Lambda Function:
- Deploy the Lambda Function:
- Deploy your function to AWS Lambda.
- Use Lambda@Edge to associate your function with your CloudFront distribution's `Origin Response` trigger.
- Access your application over HTTP to ensure it redirects to HTTPS.
- Use browser developer tools or tools like `curl` to check the presence of the HSTS header in responses.
- Always back up your configurations before making changes.
- Test your configuration in a development environment before deploying it to production.
- Regularly review and audit your security settings in AWS.
Related reading
- Enforce MFA for AWS console login but not for API calls
- Equivalent for Kafka / AWS Kinesis Stream on Google Cloud Platform
- Error AccessControlListNotSupported when trying to create a bucket ACL in AWS
- Error Cannot find module 'aws-sdk' in NodeJS AWS Lambda Function
- ERROR Cannot uninstall 'ruamel-yaml' while creating docker image for azure ML ACI deployment
- Error certificate signed by unknown authority after switching GCP project
- Error con Pods in Azure k8s Volume capability not supported
- Error deploying EKS node-group with terraform

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.