- Newest
- Most votes
- Most comments
- A cipher suite is a collection of algorithms that define how TLS will secure a connection.
- Signatures in TLS are used during the handshake phase to authenticate participants and ensure the integrity of exchanged messages
The one in question are specified using signature_algorithms during TLS negotiation (separate from the cipher suite).
How They Work Together
- The cipher suite might specify ECDHE_RSA, meaning key exchange is done with ECDHE, and the certificate is authenticated using an RSA key.
- The signature algorithm (e.g., rsa_pss_rsae_sha256) tells how exactly the RSA key signs handshake messages.
They must be compatible, but are negotiated and specified separately.
The AWS documentation only list Ciper Suites
You're right —>RSA+SHA1 should ideally not appear in a modern security policy like ELBSecurityPolicy-TLS13-1-2-Res-2021-06, especially since SHA1 is deprecated and considered insecure.
I assume this is What’s happening: While AWS documentation doesn't explicitly list RSA+SHA1 in the TLS 1.2 sig_algs, OpenSSL-based scanners (like testssl.sh) still show RSA+SHA1 in the signature algorithm negotiation for TLS 1.2. This doesn’t necessarily mean the cipher is used — just that it’s advertised as available during handshake negotiation.
AWS currently doesn’t allow you to customize or remove individual sig_algs from managed policies like ELBSecurityPolicy-TLS13-1-2-Res-2021-06. This is a limitation in how the policies are provisioned.
How to mitigate or disallow RSA+SHA1:
Option 1: Use TLS 1.3 only (where supported) TLS 1.3 does not use SHA1 anywhere in its handshake or cipher negotiation.
Restrict your listener to TLS 1.3 only via the AWS CLI or console (note: not all clients support this yet).
Option 2: Use a custom security policy (if feasible) While AWS Application Load Balancer does not support fully custom cipher suites, if you're using Network Load Balancer with TLS, you can define a custom TLS security policy.
But with ALBs, you're limited to AWS-managed policies — so the best you can do is:
Option 3: Enforce stronger client cipher preference Clients like modern browsers and APIs will prefer RSA-PSS or SHA2-based signatures first.
Weak options like RSA+SHA1 will only be negotiated with outdated clients.
Option 4: Log and block outdated clients Use AWS WAF or CloudFront headers to identify user-agents or TLS versions and block legacy traffic manually.
Or at a minimum, raise visibility for connections using legacy sig_algs.
Note: There is no way to remove it from AWS-managed ALB policies today.
To fully eliminate SHA1 exposure, use TLS 1.3-only listener or use NLB with a custom policy.
Liviu, Yes, SHA1 can still appear in the TLS handshake: Even though SHA1 is not in any AWS-documented cipher suite, it can still show up as a supported signature algorithm (RSA+SHA1) during the TLS 1.2 handshake negotiation.
This is because: Cipher suites define encryption, key exchange, and MAC. Signature algorithms (like RSA+SHA1, RSA-PSS+SHA256) are negotiated separately via the signature_algorithms extension in TLS 1.2+. AWS only lists cipher suites, not signature algorithms — so SHA1's presence is undocumented, but real.
Note: Custom NLB TLS policy: Only NLB (not ALB) allows fine-grained cipher control via custom security policies. Terminate TLS upstream (e.g., CloudFront or nginx) if you want full control
answered a year ago
Relevant content
asked 3 years ago
asked 3 years ago

Thanks Gary, does that mean that actually SHA1 is allowed as a signing algorithm, but not as part of the cipher suite?