Gejalanya
- Chrome menampilkan
ERR_CONNECTION_CLOSEDdi custom domain, biasanya diwww. curl -I https://www.domainanda.comgagal denganSSL_ERROR_SYSCALL.- Alamat
*.replit.appdari deployment yang sama masih jalan. - DNS Anda ada di Cloudflare. Domain utama (domainanda.com) mungkin masih bisa dibuka, jadi kelihatannya cuma
wwwyang bermasalah. Belum tentu.
Kasus yang kami tangani
Oktober 2026 kami memperbaiki kasus ini untuk sebuah situs marketplace di AS yang berjalan di Replit Deployments, dengan DNS di Cloudflare (mode SSL “Full”). www sama sekali tidak punya sertifikat, jadi browser langsung menutup koneksi. Sertifikat Let's Encrypt di domain utamanya ternyata juga sudah expired. Pengunjung tidak melihat sertifikat yang expired itu, karena Cloudflare dengan mode “Full” tetap menerima sertifikat origin yang expired dan pengunjung tetap dilayani.
Penyebabnya
Catatan insiden kami tidak menyebut syarat mana yang terlewat dalam kasus kami. Di bawah ini syarat penerbitan dan perpanjangan sertifikat menurut dokumentasi Replit, jadi cek satu per satu.
- Replit memperpanjang sertifikat lewat DNS. Replit menerbitkan sertifikat Let's Encrypt terpisah untuk setiap domain dan subdomain yang Anda hubungkan, lalu memperpanjangnya lewat validasi DNS. Ada dua syarat yang harus tetap terpenuhi selama domain dipakai.
- Record harus DNS only. Dokumentasi Replit menyebut Replit tidak bisa memperpanjang sertifikat untuk record yang di-proxy Cloudflare (awan oranye), dan meminta record diatur ke DNS only (awan abu-abu).
- Record TXT
replit-verifyjangan dihapus. Menurut dokumentasi Replit, record ini harus dianggap permanen, sama seperti record A. Kalau dihapus atau diubah, perpanjangan berikutnya gagal dan domain Anda akhirnya memakai sertifikat yang expired. - Kalau
wwwtidak didaftarkan sebagai domain sendiri,wwwtidak punya sertifikat di sisi Replit. Menghubungkan domain utama tidak otomatis melayaniwww.wwwperlu didaftarkan sendiri di tab Domains dengan record DNS sendiri. - Mode “Full” di Cloudflare menyembunyikan masalahnya. Di mode “Full”, Cloudflare sama sekali tidak memvalidasi sertifikat origin; sertifikatnya boleh expired atau self-signed. Akibatnya domain utama yang di-proxy tetap bisa dibuka, padahal sertifikat di belakangnya sudah expired.
- Sertifikat Let's Encrypt berlaku 90 hari. Jadi kalau perpanjangan berhenti diam-diam, situs akan rusak dalam tiga bulan.
Sertifikat custom domain Replit yang expired sudah dilaporkan di forum Replit sejak Agustus 2025, dan di thread yang kami baca tidak ada jawaban dari staf Replit. Pengguna di sana melaporkan solusi serupa: memutuskan lalu menyambungkan ulang domain (ada juga yang menghapus lalu menambahkannya lagi). Memutuskan dan menyambungkan ulang itulah yang berhasil untuk kami.
Cara memperbaikinya
- Cek sertifikat yang benar-benar dipakai tiap hostname. Jalankan checker gratis kami untuk domain Anda (domain utama dan www dicek sekaligus). Untuk hostname yang di-proxy Cloudflare, checker tidak bisa melihat sertifikat di balik proxy, jadi cek langsung ke server asal dengan IP record A yang diberikan Replit:
openssl s_client -connect <IP record A dari Replit>:443 -servername domainanda.com </dev/null | openssl x509 -noout -enddate-servernamemengirim nama domain Anda ke server Replit, jadi yang keluar adalah sertifikat untuk domain Anda.-enddatemenampilkan tanggal kedaluwarsanya. Ulangi untukwww.domainanda.com. Kalau tidak ada sertifikat yang muncul, berarti hostname itu memang tidak punya sertifikat. - Ubah record Replit di Cloudflare jadi DNS only. Di menu DNS Cloudflare, ganti record A domain utama (dan record
www, kalau dilayani Replit) dari Proxied ke DNS only. Akibatnya, hostname itu tidak lagi mendapat caching dan perlindungan Cloudflare, termasuk aturan WAF dan perlindungan DDoS, dan IP Replit Anda bisa dilihat siapa saja yang mengecek record-nya. Kalau Anda butuh semua itu, lihat bagian Kapan perlu bantuan. - Cek record TXT
replit-verifyuntuk tiap hostname. Nilainya harus sama dengan yang tertera di tab Domains Replit. Tambahkan lagi kalau hilang. - Pastikan
wwwterdaftar sebagai domain sendiri di tab Domains Replit, lengkap dengan record-nya. Kalauwwwcukup diarahkan ke domain utama, lihat bagian pencegahan di bawah. - Putuskan lalu sambungkan ulang domain di tab Domains Replit, cukup sekali. Langkah inilah yang memberi kami sertifikat baru. Setiap kali disambungkan ulang, Replit meminta sertifikat baru, jadi dokumentasinya menyarankan untuk tidak mencoba berulang kali. Perubahan DNS bisa butuh waktu sampai 48 jam untuk sampai ke Replit. Kalau status domain Failed, Replit sudah berhenti mengecek (pengecekan berjalan sekitar 6 jam); bereskan DNS-nya dulu, lalu hapus dan tambahkan lagi domainnya, sesuai dokumentasi Replit.
- Cek lagi. Jalankan checker atau perintah openssl untuk kedua nama. Seharusnya muncul sertifikat baru yang berlaku sekitar 90 hari ke depan.
Supaya tidak terulang
- Pantau sertifikat di server asal, bukan lewat Cloudflare. Pasang peringatan kalau sisa masa berlakunya kurang dari 20 hari. Kalau semuanya normal, perpanjangan terjadi jauh sebelum itu; Let's Encrypt menyarankan sertifikat 90 hari diperpanjang tiap 60 hari.
- Biarkan record yang dilayani Replit tetap DNS only, dan simpan TXT
replit-verifysecara permanen di setiap hostname yang dilayani Replit. - Jangan host sebuah nama di Replit hanya untuk redirect. Kalau satu nama cuma untuk redirect (misalnya domain utama ke
www), hapus nama itu dari tab Domains Replit, biarkan record-nya di Cloudflare tetap Proxied (awan oranye), lalu buat Redirect Rule di Cloudflare. Redirect Cloudflare hanya berjalan di record yang di-proxy; kalau record-nya DNS only, redirect-nya tidak akan jalan. Hasilnya, ada satu sertifikat lebih sedikit yang harus diperpanjang Replit. - Jadwalkan pengecekan di kalender di pertengahan masa berlaku tiap sertifikat.
- Kalau Anda butuh proxy Cloudflare di depan aplikasi, rencanakan dari awal: proxy ke alamat
*.replit.applewat Cloudflare Worker, atau pindahkan hosting ke tempat yang mendukung proxy.
Kapan perlu bantuan
- Anda sudah menyambungkan ulang sekali, sudah menunggu, tapi domain tetap Failed atau tetap tanpa sertifikat.
- Anda butuh proxy Cloudflare tetap aktif (WAF, caching) dan tidak bisa mematikannya.
- Gangguan ini sudah membuat traffic turun dan Anda ingin seluruh setup-nya dicek dari ujung ke ujung.
Kami memperbaiki dan menyelesaikan aplikasi yang dibangun dengan Replit, Lovable, dan Bolt: lihat Fix my Replit app. Yang muncul justru Error 525: SSL handshake failed dari Cloudflare? Itu masalah lain dengan solusi yang berbeda: Replit 525 di belakang Cloudflare.
Cek sertifikat custom domain Anda sekarang (gratis)
Masukkan domain Anda, lalu kami cek domain utama dan www: apakah masing-masing punya sertifikat, kapan expired (untuk nama yang tidak di balik proxy Cloudflare), apakah replit-verify ada, dan apakah proxy Cloudflare aktif.
Cek domain sayaSumber
- Replit Docs, "Custom domains"
- Cloudflare, "Full" SSL/TLS mode
- Cloudflare, "Proxy status"
- Cloudflare, "Redirects"
- Let's Encrypt, "FAQ"
- Replit Community Forum, "SSL certificate expired for custom domain" (user posts, 2025-08-28 to 2026-02-08, not Replit staff)
- Replit Community Forum, "SSL certificate not renewing automatically (custom domain)" (user post, 2026-02-11, not Replit staff)
- OpenSSL 3.0 manual, openssl-s_client
- OpenSSL 3.0 manual, openssl-x509
