TLS Cipher Suite Weakness Detected: Quick Fix Guide
You're getting a TLS cipher suite weakness warning. It means your server allows old, weak encryption. Fix it by disabling outdated ciphers like RC4 and 3DES.
Quick Answer for the Impatient
Disable all ciphers that use RC4, 3DES, or MD5. On Windows Server, run this command in an elevated PowerShell: Disable-TlsCipherSuite -Name 'TLS_RSA_WITH_RC4_128_SHA', 'TLS_RSA_WITH_3DES_EDE_CBC_SHA'. Then restart your web server.
Why You're Seeing This Warning
You or your security scanner found a weakness in your server's TLS configuration. This usually shows up as a warning like TLS cipher suite weakness detected or a similar note from Nessus, Qualys SSL Labs, or your company's vulnerability scanner.
Here's the short version: your server is offering old, broken encryption methods. Hackers can break these in hours or minutes. The two big offenders are:
- RC4 – completely broken. Microsoft, Google, and Apple all stopped using it years ago.
- 3DES – slow and vulnerable to Sweet32 attack. You should never use it.
- Any cipher using MD5 – just no.
This tripped me up the first time too. I had a Windows Server 2012 R2 box that passed PCI scans for two years, then suddenly failed on a new TLS check. The fix was simple: remove a few weak ciphers from the registry.
How to Fix It (Step by Step)
For Windows Server (IIS, Exchange, SQL, etc.)
- Open PowerShell as Administrator.
- Run this command to see all enabled ciphers:
Get-TlsCipherSuite | Where-Object {$_.Name -like '*RC4*' -or $_.Name -like '*3DES*' -or $_.Name -like '*MD5*'} - Disable each weak cipher. For example:
Disable-TlsCipherSuite -Name 'TLS_RSA_WITH_RC4_128_SHA'
Disable-TlsCipherSuite -Name 'TLS_RSA_WITH_RC4_128_MD5'
Disable-TlsCipherSuite -Name 'TLS_RSA_WITH_3DES_EDE_CBC_SHA' - Reboot the server or at least restart IIS with
iisreset.
Note: On older Windows (Server 2008 R2, 2012), you can't use PowerShell. Instead, go to HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers and manually disable RC4 and 3DES by setting their Enabled DWORD to 0.
For Apache
- Open your SSL config file – usually
/etc/httpd/conf.d/ssl.confor/etc/apache2/mods-enabled/ssl.conf. - Find the line that starts with
SSLCipherSuite. Replace it with this:SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 - Save the file and restart Apache:
sudo systemctl restart apache2orsudo service httpd restart.
For Nginx
- Open your nginx config – usually
/etc/nginx/nginx.confor a site file. - Inside the
serverblock that handles HTTPS, add or change this line:ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; - Test the config:
sudo nginx -t. - Reload:
sudo systemctl reload nginx.
What If the Warning Persists?
Sometimes the fix doesn't take right away. Here's what to check:
- Did you restart the server? Not just the web service. TLS cipher changes on Windows often need a full reboot.
- Are you behind a load balancer or reverse proxy? If you use AWS ALB, Cloudflare, or HAProxy, you need to configure ciphers there too. The server behind might be fine, but the front-end is still offering weak ciphers.
- Is your scanner targeting the right host? I once spent 3 hours fixing an old Apache box, only to realize the scanner was pointing at the load balancer, not the server.
- Check for TLS 1.0/1.1. Some scanners report cipher weakness when the real problem is old protocol versions. Disable TLS 1.0 and 1.1. Keep TLS 1.2 and 1.3.
How to Stop This From Happening Again
Set up a monthly scan with SSL Labs' SSL Server Test (free) or use a tool like testssl.sh. Run it after every OS patch or web server update. A lot of updates re-enable old ciphers – I've seen Windows Update do this twice.
Also, use a configuration management tool like Ansible or a simple PowerShell script that runs weekly and disables any weak ciphers that appear. Here's a basic one-liner for Windows:
Get-TlsCipherSuite | Where-Object {$_.Name -like '*RC4*' -or $_.Name -like '*3DES*' -or $_.Name -like '*MD5*'} | Disable-TlsCipherSuitePut that in a scheduled task and you're covered.One last thing: don't blindly copy cipher lists from the internet. Some lists exclude all DHE ciphers, which breaks compatibility with old Android phones and some POS systems. The list I gave above works with everything modern and passes PCI scans.
Was this solution helpful?