HTTP SSL/TLS Handshake Errors — Certificate and Protocol Failures
About HTTP SSL/TLS Handshake Errors
Fix SSL/TLS handshake errors including certificate expired, self-signed certificate, protocol version mismatch, and cipher suite negotiation failures. This guide covers everything you need to know about this topic, including common causes, step-by-step solutions, and answers to frequently asked questions.
Here are the key things to understand: The TLS handshake establishes encryption before any HTTP data is exchanged. Common TLS versions: TLS 1.2 (widely supported) and TLS 1.3 (latest, faster handshake). Certificate errors prevent the handshake from completing — browser shows a security warning. Cipher suite mismatch occurs when client and server have no common encryption algorithm. Certificate chain must include all intermediate certificates — missing intermediates cause errors on some devices. Understanding these fundamentals will help you diagnose and resolve this issue more effectively.
The most common reasons this occurs include: SSL certificate expired — certificates are valid for 1 year (previously 2 years). Self-signed certificate not trusted by the client's certificate store. Missing intermediate certificate in the server's certificate chain. Server only supports TLS 1.0/1.1 which modern browsers have deprecated. Cipher suite mismatch between client and server (e.g., server only supports weak ciphers). Identifying the root cause is the first step toward finding the right solution.
To resolve this, follow these recommended steps: Check certificate status: openssl s_client -connect example.com:443 -servername example.com. Verify the full certificate chain: ssllabs.com/ssltest provides detailed analysis. Renew expired certificates: use certbot for Let's Encrypt or your CA's renewal process. Install intermediate certificates: concatenate server cert + intermediate cert in the correct order. Enable TLS 1.2 and 1.3: disable TLS 1.0 and 1.1 for security compliance. Use modern cipher suites: prioritize ECDHE and AES-GCM, disable RC4 and 3DES. If these steps do not resolve the issue, consider consulting additional resources or a qualified professional.
This article is part of our HTTP Status Codes collection on Error Codes Wiki. We provide comprehensive, up-to-date information to help you find solutions quickly.
Quick Answer
How do I check when my SSL certificate expires?
Run: openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates. Or use ssllabs.com/ssltest for a full report.
Overview
Fix SSL/TLS handshake errors including certificate expired, self-signed certificate, protocol version mismatch, and cipher suite negotiation failures.
Key Details
- The TLS handshake establishes encryption before any HTTP data is exchanged
- Common TLS versions: TLS 1.2 (widely supported) and TLS 1.3 (latest, faster handshake)
- Certificate errors prevent the handshake from completing — browser shows a security warning
- Cipher suite mismatch occurs when client and server have no common encryption algorithm
- Certificate chain must include all intermediate certificates — missing intermediates cause errors on some devices
Common Causes
- SSL certificate expired — certificates are valid for 1 year (previously 2 years)
- Self-signed certificate not trusted by the client's certificate store
- Missing intermediate certificate in the server's certificate chain
- Server only supports TLS 1.0/1.1 which modern browsers have deprecated
- Cipher suite mismatch between client and server (e.g., server only supports weak ciphers)
Steps
- 1Check certificate status: openssl s_client -connect example.com:443 -servername example.com
- 2Verify the full certificate chain: ssllabs.com/ssltest provides detailed analysis
- 3Renew expired certificates: use certbot for Let's Encrypt or your CA's renewal process
- 4Install intermediate certificates: concatenate server cert + intermediate cert in the correct order
- 5Enable TLS 1.2 and 1.3: disable TLS 1.0 and 1.1 for security compliance
- 6Use modern cipher suites: prioritize ECDHE and AES-GCM, disable RC4 and 3DES