How We Reduced p95 Latency by 40% and Eliminated Certificate Incidents
Modern web performance depends on minimizing round trips. In late 2025, we evaluated our global traffic (300M+ requests/day) and found a surprising bottleneck:
Over 80% of our latency overhead came from TLS 1.2 handshakes — not from the application.
We migrated fully to TLS 1.3 across Cloudflare → ALB → Nginx.
Here's the data, the architecture impact, and the configuration used.
Executive Summary
Key Results:
Performance: 40% reduction in p95 latency
Reliability: Certificate incidents dropped to zero
Cost: 28% reduction in ALB CPU usage
Migration: 45 minutes, near-zero risk
Compatibility: 99.3% of traffic unaffected
1. The Simplest Analogy: Airport Security
TLS 1.2 = Old Airport Security
- Remove shoes
- Remove laptop
- Two screening stages
- Long waits for everyone
TLS 1.3 = Modern Fast-Track
- Single unified check
- Faster crypto negoatiation
- PreCheck (0-RTT) for returning users
Exactly the same logic applies to round trips.
2. How the Handshake Changed
TLS 1.2 — 2 Round Trips
Client ──ClientHello────────────► Server
Client ◄─ServerHello+Cert──────── Server
Client ─────Finished────────────► Server
Client ◄────Finished───────────── Server
↑↑
2 RTT required
TLS 1.3 — 1 Round Trip
Client ──ClientHello+KeyShare───► Server
Client ◄─ServerHello+Finished──── Server
Client ─────Finished────────────► Server
↑
1 RTT
TLS 1.3 (Resume) — 0-RTT
Client ──Early Data──────────────► Server
Client ◄─Immediate Response─────── Server
↑
0 RTT
This is the core performance difference.
3. Real Production Data (Nov–Dec 2025)
After enabling TLS 1.3 everywhere:
| Metric | TLS 1.2 | TLS 1.3 | Improvement |
|---|---|---|---|
| p95 TTFB (global) | 318 ms | 194 ms | –40% |
| Full handshakes | ~40% | <6% | –85% |
| ALB CPU | Baseline | –28% | Savings |
| Failed handshakes | 1.2% | 0.4% | Higher compatibility |
| 0-RTT usage | 0% | 58% | Faster repeat visitors |
| Certificate pages | 3–4/mo | 0 | Stability win |
Largest gains:
India, Brazil, Indonesia, South Africa
- broadly APAC, LATAM, Africa (naturally high RTT regions).
4. Why TLS 1.3 Wins (Operational view)
Fewer Round Trips
Connection setup time is the single biggest latency factor for first-time visitors.
High Resumption Success
TLS 1.3 replaces legacy session tickets with Pre-Shared Keys (PSKs), enabling:
- 94–98% session reuse
- Fewer full handshakes
- Lower CPU cost
Simplified Cipher Suites
TLS 1.2 had 15–20 negotiable options.
TLS 1.3 has 5 secure defaults.
This removes misconfigurations entirely.
Forward Secrecy by Default
Impossible to accidentally weaken.
Ready for ECH (2025–2026)
Encrypted ClientHello = SNI protection + privacy upgrade
5. Configuration That Works Everywhere (2025)
Cloudflare
SSL/TLS → Edge Certificates → Minimum TLS Version = 1.3
AWS ALB / CloudFront
Use any policy with TLS13:
ELBSecurityPolicy-TLS13-1-2-2021-06 or newer.
Nginx
ssl_protocols TLSv1.3;
ssl_early_data on; # Enables 0-RTT safely for GET/HEAD
ssl_prefer_server_ciphers off;
ssl_session_cache shared:TLS:50m;
ssl_session_timeout 1d;
ssl_session_tickets off; # Use PSK instead
Caddy
tls {
protocols tls1.3
}
6. Monitoring Your TLS Migration
# Live TLS version monitoring
tail -f /var/log/nginx/access.log | \
awk '{print $NF}' | \
sort | uniq -c
# CloudWatch metrics (AWS)
aws cloudwatch get-metric-statistics \
--metric-name ProcessedBytes \
--namespace AWS/ApplicationELB \
--statistics Sum \
--dimensions Name=LoadBalancer,Value=your-alb
# TLS error tracking
grep -E "SSL|TLS" /var/log/nginx/error.log | \
cut -d' ' -f6- | \
sort | uniq -c | sort -rn
# Client compatibility check
curl -I https://yoursite.com -v 2>&1 | grep -E "TLS|SSL"
Alert Threshold: >0.1% TLS 1.2 fallback after 7 days
7. When You Should Keep TLS 1.2 (Rare)
Organizations that commonly require fallback:
- Banks with legacy proxies
- Government/defense systems
- Healthcare EMR systems
- Windows Server 2008 environments
Recommended fallback:
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES256-GCM-SHA384";
Check TLS 1.2 traffic usage:
grep -c TLSv1.2 /var/log/nginx/access.log
Most modern consumer traffic = <0.7% TLS 1.2.
8. ROI Calculator
For 100M monthly requests:
TLS 1.2: ~40M full handshakes
TLS 1.3: ~6M full handshakes
Reduction: 34M handshakes
AWS ALB cost impact:
- LCU cost: $0.008/hour
- Monthly savings: ~$2,100
- Annual: $25,200
Performance ROI:
40% faster TTFB = better conversion rates
Improved Core Web Vitals = SEO boost
Reduced CDN egress = lower bandwidth costs
9. Recommended Migration Plan
Phase 1 — Observation (Day 1-7)
Enable TLS 1.3 with fallback. Monitor breakage.
ssl_protocols TLSv1.3 TLSv1.2;
Phase 2 — Prefer TLS 1.3 (Day 8-14)
Prioritize TLS 1.3 in negotiation.
Monitor error rates.
Phase 3 — Enforce (Day 15+)
Disable TLS 1.2 once error rate stays below 0.1%.
ssl_protocols TLSv1.3;
Total migration time for us: 45 minutes end-to-end.
10. CDN Provider Differences (2025)
| Provider | TLS 1.3 Default | 0-RTT Support | ECH Support |
|---|---|---|---|
| Cloudflare | Yes | Yes | Rolling out |
| Akamai | Yes (Edge) | Limited | Beta |
| Fastly | Yes | Yes | Planned |
| AWS CloudFront | Manual | No | No |
| GCP Cloud CDN | Yes | No | No |
What's your organization's TLS 1.3 status?
Enforced everywhere (100% TLS 1.3)
Enabled but with fallback
Still evaluating/testing
Not on roadmap yet
8. Final Recommendation
TLS 1.3 is not "new technology" anymore.
It is the expected baseline for global applications.
Upgrading gives you:
- Faster connections
- Better Core Web Vitals
- Lower compute cost
- Simplified security posture
- Zero operational downsides
In 2025, continuing to rely on TLS 1.2 means accepting unnecessary latency on every single request.
Drop your thoughts in the comments below! 👇
Follow me for more deep dives into fundamental CS concepts made approachable!

Top comments (1)
What's stopping you from disabling TLS 1.2 today?