Skip to main content

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

Medium

Address

Security

Compliance Standards

  • CIS OKE

Triage and Remediation

Remediation

Manual Steps

  1. 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:
    • Filter to internet-facing endpoints used by this cluster (by name, tags, annotations, or target backends).
  2. 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).
  3. 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:
  4. 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.
  5. 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.
  6. 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).
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.