While testing an HAProxy/stunnel setup on AWS, I encountered a frustrating scenario where Chrome persistently threw ERR_SSL_VERSION_OR_CIPHER_MISMATCH
after switching from a self-signed to a legitimate certificate. Other browsers worked fine, and incognito mode bypassed the issue - classic symptoms of Chrome's stubborn SSL cache.
The most effective solution I've found involves Chrome's experimental flags. Paste this into your address bar:
chrome://flags/#ssl-version-min
Set Minimum SSL/TLS version to "TLS 1.0", restart Chrome, then revert the setting. This forces a complete SSL state reset.
Chrome relies on the Windows certificate store. To manually remove cached certs:
certmgr.msc
Navigate to:
- Personal → Certificates
- Trusted Root Certification Authorities
- Intermediate Certification Authorities
Delete any suspicious entries related to your domain.
For developers who need to inspect Chrome's SSL cache:
chrome://net-internals/#hsts
Try these actions:
1. Query your domain under "Query HSTS/PKP domain" 2. Delete domain security policies if present 3. Clear SSL socket pools under "Sockets" tab
When standard methods fail, try these advanced techniques:
# PowerShell command to reset schannel cache Clear-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL"
Or completely reset Chrome's profile:
# Windows path to reset Chrome profile rmdir /s /q "%LOCALAPPDATA%\Google\Chrome\User Data\Default"
When testing SSL configurations:
- Always use
chrome://restart
after certificate changes - Consider using Chrome's
--user-data-dir=temp-profile
flag for testing - For development, add this to Chrome's shortcut:
--ignore-certificate-errors
To verify your server's certificate chain independently:
openssl s_client -connect yourdomain.com:443 -showcerts
Compare the output between working and non-working environments.
When testing SSL configurations with self-signed certificates in Chrome, you might encounter persistent SSL errors even after replacing them with legitimate certificates. The ERR_SSL_VERSION_OR_CIPHER_MISMATCH
often indicates Chrome has cached the old certificate's metadata.
Incognito sessions bypass Chrome's SSL session cache, which explains why your site loads correctly in private mode. Chrome maintains this cache separately from regular browsing data to optimize SSL handshake performance.
Method 1: Chrome's Built-in Flag
Navigate to:
chrome://flags/#enable-ssl-version-interference-probe
Enable the flag and restart Chrome.
Method 2: Windows Certificate Store
1. Open certmgr.msc
2. Navigate to:
Trusted Root Certification Authorities → Certificates
3. Delete any test certificates
Method 3: Chrome's Internal Cache
Close Chrome completely and delete these files:
%LocalAppData%\Google\Chrome\User Data\Default\Network\*
%LocalAppData%\Google\Chrome\User Data\Default\Session Storage\*
Inspect the SSL handshake details:
1. Open DevTools (F12)
2. Go to Security tab
3. Click "View certificate"
4. Verify the certificate chain matches your new cert
Create a batch script to handle cleanup:
@echo off
taskkill /f /im chrome.exe
del /q "%LocalAppData%\Google\Chrome\User Data\Default\Network\*"
del /q "%LocalAppData%\Google\Chrome\User Data\Default\Session Storage\*"
start chrome "chrome://net-internals/#sockets"
For frequent SSL testing, configure Chrome to ignore certificate caching:
1. Add these Chrome shortcuts flags:
--ssl-version-min=tls1.2 --disable-ssl-version-fallback
2. Alternatively, use these launch parameters:
chrome.exe --user-data-dir=temp-profile --ignore-certificate-errors
After clearing the cache, verify with:
chrome://net-internals/#hsts
Query your domain to ensure no stale entries exist in Chrome's HSTS cache.