ERR_SSL_VERSION_OR_CIPHER_MISMATCH: Kenapa Bisa Muncul dan Cara Memperbaikinya (Cloudflare + Reverse Proxy)
ERR_SSL_VERSION_OR_CIPHER_MISMATCH adalah salah satu error SSL yang paling bikin frustrasi. Di browser, situs terlihat “down”, padahal service di server bisa saja sebenarnya masih berjalan.
Masalah utamanya biasanya bukan sekadar “SSL rusak”, tapi ada ketidakcocokan konfigurasi TLS antar-layer: Cloudflare, WAF, reverse proxy (Traefik/Nginx), dan origin server.
Di artikel ini, kita bahas cara diagnosis cepat dan langkah perbaikan yang aman dipakai di lingkungan production.
1) Sebenarnya error ini artinya apa?
Secara sederhana, browser gagal menyelesaikan proses TLS handshake dengan endpoint yang dituju. Penyebabnya bisa:
- sertifikat tidak cocok dengan hostname
- chain sertifikat tidak valid
- mode SSL antar-layer tidak sinkron
- ada proxy yang mengubah alur handshake
- redirect rule yang salah
Jadi, fokus troubleshooting-nya harus melihat alur koneksi end-to-end, bukan hanya server aplikasi.
2) Penyebab paling umum
a) Hostname tidak tercakup sertifikat Cloudflare
Contoh yang sering terjadi: domain multi-level seperti whoami.oc.domain.com tidak tercakup cert edge default.
Akibatnya, saat proxied lewat Cloudflare, browser gagal handshake.
b) SSL mode Cloudflare tidak cocok
Mode di Cloudflare (Flexible, Full, Full (strict)) harus sesuai dengan kondisi cert di origin.
Flexible: Cloudflare ke origin bisa HTTP (tidak direkomendasikan untuk setup modern)Full: TLS ke origin, tapi validasi cert longgarFull (strict): TLS ke origin + cert harus valid
Kalau origin cert tidak valid tapi mode strict, handshake gagal.
c) Origin certificate / SNI mismatch
Reverse proxy bisa punya cert, tapi bukan untuk domain yang diminta. Atau server mengembalikan cert default yang salah karena SNI tidak match.
d) Redirect salah (loop ke :443)
Rule seperti ini sering jadi biang masalah:
https://$host:443$request_uri
Hasilnya bisa loop aneh dan browser menampilkan error SSL yang menyesatkan.
e) Bentrok Cloudflare + WAF + reverse proxy
Kalau ada banyak layer proxy, satu setting yang salah di tengah bisa bikin handshake putus.
3) Diagnosis cepat (5–10 menit)
Jalankan cek ini berurutan.
a) Cek DNS resolve publik
dig +short yourdomain.com A @1.1.1.1
dig +short yourdomain.com AAAA @1.1.1.1
Pastikan hasilnya sesuai jalur yang kamu inginkan (direct ke origin atau lewat Cloudflare).
b) Cek header respon
curl -I https://yourdomain.com
Lihat server, location, dan apakah terjadi redirect berulang.
c) Cek loop redirect
curl -L -o /dev/null -s -w 'code=%{http_code} redirects=%{num_redirects} url=%{url_effective}\n' https://yourdomain.com
Kalau redirects naik terus, berarti ada loop.
d) Cek sertifikat yang dikirim endpoint
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -subject -issuer -dates
Verifikasi:
- CN/SAN sesuai hostname
- masa berlaku belum habis
- issuer sesuai ekspektasi (Cloudflare edge atau origin cert)
4) Cara memperbaiki (step-by-step)
Langkah 1 — Rapikan mode SSL Cloudflare
Untuk production, biasanya paling aman pakai Full (strict).
Langkah 2 — Pastikan cert edge cover hostname
Kalau pakai hostname multi-level (mis. *.oc.domain.com), cek apakah cert edge Cloudflare mencakup pola itu.
Kalau belum tercakup:
- gunakan hostname yang didukung cert default, atau
- tambahkan cert yang memang cover subdomain level itu.
Langkah 3 — Rapikan redirect rule
Hindari hardcode :443 di URL redirect.
Gunakan pola aman:
https://$host$request_uri
Langkah 4 — Validasi origin cert
Kalau mode strict aktif, cert origin harus valid dan match hostname.
Langkah 5 — Uji lagi dari luar
Setelah perubahan, ulangi:
curl -Icurl -Lopenssl s_client
Pastikan tidak ada loop dan handshake berhasil.
5) Checklist validasi akhir
- domain bisa diakses normal via browser
curl -Ltidak loop- cert valid dan match hostname
- Cloudflare SSL mode konsisten (
Full (strict)) - endpoint reverse proxy merespons 200/expected status
- tidak ada rule redirect yang menyisipkan
:443secara salah
6) FAQ singkat
Q: Kalau DNS only normal, tapi proxied Cloudflare error, itu kenapa?
A: Hampir pasti masalahnya di layer Cloudflare ↔ origin TLS (mode SSL, cert coverage, atau chain trust).
Q: Apakah error ini selalu berarti server aplikasi down?
A: Tidak. Seringnya aplikasi hidup, tapi handshake TLS gagal sebelum request sampai ke app.
Q: Perlu matikan Cloudflare dulu?
A: Tidak selalu. Untuk isolasi, boleh test sementara DNS-only pada subdomain testing, lalu kembalikan setelah fix.
Penutup
ERR_SSL_VERSION_OR_CIPHER_MISMATCH terlihat seperti error “misterius”, tapi pola penyebabnya sebenarnya berulang. Kalau diagnosis dilakukan berurutan (DNS → header → redirect → cert), sumber masalah biasanya cepat ketemu.
Kuncinya: sinkronkan konfigurasi antar-layer, terutama mode Cloudflare, cakupan sertifikat, dan rule redirect di reverse proxy.