More Info:
Configure HTTPS with TLS certificates on load balancers to encrypt traffic in transit. Consult your load balancer vendor documentation for configuration details.Risk Level
MediumAddress
SecurityCompliance Standards
- CIS OKE
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
Inventory all externally exposed load balancers
- On an admin workstation with cloud CLI configured, list all LBs that front Kubernetes workloads (adapt provider as needed):
- AWS:
- GCP:
- Azure:
- AWS:
- Filter to internet-facing endpoints used by this cluster (by name, tags, annotations, or target backends).
- On an admin workstation with cloud CLI configured, list all LBs that front Kubernetes workloads (adapt provider as needed):
-
Verify protocol and ports for each public endpoint
- For each LB DNS name or IP, check if HTTPS (443) is enabled and HTTP (80) is still open:
- In the cloud console, open each LB and review listeners / rules:
- Confirm at least one HTTPS/TLS listener (usually port 443).
- Note any plaintext HTTP listeners (80 or custom).
- For each LB DNS name or IP, check if HTTPS (443) is enabled and HTTP (80) is still open:
-
Inspect TLS certificate configuration on HTTPS listeners
- In the console for each LB with HTTPS:
- Confirm a certificate is attached to the HTTPS listener.
- Confirm:
- The certificate is not expired and matches the LB hostname / domain.
- A trusted CA was used (or your approved internal CA).
- Strong TLS protocol versions and cipher policies are enforced (per your security baseline).
- If needed, validate from an admin workstation:
- In the console for each LB with HTTPS:
-
Decide and implement required HTTPS/TLS configuration changes
- For any internet-facing LB without HTTPS:
- In the cloud console or via IaC, add an HTTPS/TLS listener (e.g., 443) and point it to the same backend target group / pool.
- Attach an existing approved certificate or request/import a new one using the provider’s certificate manager.
- Optionally configure HTTP (80) only to:
- Redirect to HTTPS (preferred), or
- Be disabled entirely if not needed.
- For any internet-facing LB without HTTPS:
-
Update or create TLS certificates as needed
- For endpoints missing valid certificates or using weak / untrusted certs:
- Request or import a compliant certificate via the cloud provider’s certificate manager (e.g., ACM, Google Managed Certs, Azure Key Vault/Certificates).
- Attach the new certificate to the relevant HTTPS listeners.
- Ensure IaC (Terraform, CloudFormation, ARM/Bicep, etc.) is updated to declare:
- HTTPS listeners with certificate ARNs/IDs.
- Any required redirect rules, so future deployments remain compliant.
- For endpoints missing valid certificates or using weak / untrusted certs:
-
Verify enforcement of HTTPS and correct behavior
- From an admin workstation, confirm HTTP is redirected or closed and HTTPS works:
- Optionally re-run the initial CLI listing and document which LBs:
- Have HTTPS enabled with valid certificates, and
- No longer expose unprotected HTTP endpoints (except where explicitly and formally approved).
- From an admin workstation, confirm HTTP is redirected or closed and HTTPS works:
Using kubectl
Using kubectl
kubectl cannot configure TLS on cloud provider or external HTTPS load balancers; that configuration must be done in your cloud provider console/CLI or IaC tooling where the load balancer is defined. Refer to the Manual Steps section for guidance on reviewing and updating your load balancer TLS settings.
Automation
Automation

