Bali, Indonesia
Insights

Kenapa Redirect HTTPS Global Bikin Perpanjangan Otomatis ACME Gagal

October 18, 2026
0:00
Banyak pengelola server atau pemilik website merasa pekerjaannya selesai begitu konfigurasi force HTTPS terpasang rapi. Browser langsung menampilkan gembok hijau atau abu-abu aman, semua halaman otomatis dialihkan ke port 443, dan website berjalan normal selama dua bulan pertama. Masalah baru meledak saat masa berlaku sertifikat mendekati akhir dan proses perpanjangan otomatis via protokol ACME (Automated Certificate Management Environment) tiba-tiba melempar status failed. Dalam alur bantuan teknis hosting, kasus perpanjangan sertifikat gagal akibat redirect global adalah salah satu tiket eskalasi yang paling sering muncul. Masalah ini kerap disalahpahami: ada yang mengira otoritas penerbit sertifikat sedang bermasalah, dan ada juga yang menduga DNS belum mengarah dengan benar ke server tujuan, seperti yang sempat diulas dalam artikel tentang kenapa AutoSSL gagal diperbarui padahal domain sudah mengarah ke server. Agar tidak salah arah saat mencari akar masalah, kita bedah beberapa mitos dan realitas di balik kegagalan validasi ACME saat berhadapan dengan redirect HTTPS global.
Anggapan ini cukup luas beredar di kalangan pengelola server pemula. Banyak yang mengira bahwa metode validasi HTTP-01 mensyaratkan server harus langsung mengembalikan file verifikasi token secara polos lewat koneksi HTTP port 80 tanpa boleh dialihkan sama sekali. Faktanya, sebagian besar otoritas sertifikat (Certificate Authority atau CA) modern seperti Let's Encrypt mendukung redirect following. Saat bot validator meminta token verifikasi di path /.well-known/acme-challenge/<TOKEN>, validator tersebut bersedia mengikuti respons status HTTP 301, 302, atau redirect sementara lainnya hingga beberapa kali lompatan. CA bahkan secara eksplisit mengizinkan pengalihan dari http://domain.com/.well-known/... menuju https://domain.com/.well-known/.... Lalu, kenapa perpanjangan otomatis tetap gagal jika redirect sebenarnya diizinkan? Masalahnya bukan pada keberadaan redirect itu sendiri, melainkan pada ke mana trafik tersebut diarahkan dan bagaimana web server memproses request lanjutan setelah pengalihan terjadi. Jika redirect memotong path URL, menimpa nama domain dengan subdomain yang belum memiliki sertifikat, atau melempar validator ke vhost yang keliru, validasi akan langsung ditolak.
Secara teori, melempar request HTTP ke HTTPS untuk nama domain yang identik terdengar sangat logis. Pengelola server biasanya menulis aturan rewrite yang mencegat seluruh trafik yang masuk ke port 80 lalu meneruskannya secara mentah ke port 443. Kenyataannya, skenario ini sering menjadi bumerang ketika sertifikat lama sudah telanjur kedaluwarsa atau belum terbentuk sempurna. Saat validator ACME menerima respons 301 menuju URL versi HTTPS, validator akan memulai jabat tangan (handshake) TLS baru ke port 443. Jika sertifikat yang terpasang di port 443 sudah kadaluwarsa, tidak valid, atau menggunakan self-signed certificate darurat bawaan sistem operasi, validator akan menghentikan proses demi alasan keamanan. Selain persoalan status sertifikat, banyak aturan redirect global yang ditulis tanpa mempertahankan parameter URL asli. Pola penulisan yang kurang teliti kerap mengarahkan path request yang spesifik langsung ke halaman beranda (root URL). Ketika validator meminta file /.well-known/acme-challenge/abcxyz, server merespons dengan redirect 301 menuju https://domain.com/. Validator membaca halaman HTML beranda, bukan token acak yang dicari, sehingga proses validasi HTTP-01 otomatis gugur. Kasus ini juga bisa memicu masalah pengalihan berulang yang memusingkan, terutama jika web server berada di balik CDN atau reverse proxy. Pola pengalihan semacam ini perlu diuji langsung di terminal dengan memeriksa respons header satu per satu, sebagaimana langkah yang dijelaskan pada panduan melacak sumber redirect loop HTTPS lewat header respons curl.
Banyak orang terjebak asumsi bahwa jika sertifikat berhasil terbit saat domain pertama kali didaftarkan, maka perpanjangan 60 atau 90 hari berikutnya dijamin berhasil tanpa intervensi. Padahal, kondisi server saat instalasi awal dan saat perpanjangan berkala sering kali sudah jauh berbeda. Saat server pertama kali disiapkan, port 80 biasanya masih bersih tanpa aturan rewrite yang rumit. Certbot atau modul AutoSSL dapat meletakkan token verifikasi di webroot dan mengambilnya kembali lewat HTTP tanpa rintangan. Namun setelah situs berjalan, pengembang atau sysadmin mulai memasang aturan baru: pengalihan domain non-www ke www, mod_rewrite aplikasi CMS, firewall aplikasi web (WAF), hingga pemaksaan HTTPS ketat melalui file .htaccess atau blok konfigurasi Nginx. Ketika jadwal cron job ACME berjalan otomatis dua bulan kemudian, aturan-aturan baru inilah yang mencegat request dari validator. Modul keamanan server sering kali mencurigai bot verifikasi eksternal atau memblokir akses ke direktori bertitik seperti .well-known karena dianggap sebagai upaya manipulasi direktori tersembunyi (hidden directory traversal). Akibatnya, server mengembalikan kode 403 Forbidden alih-alih file token yang valid.
Menghadapi perpanjangan otomatis yang mendadak mogok sering kali membuat teknisi panik dan mulai mengubah alur DNS atau bahkan berencana memindahkan validasi ke DNS-01. Menggunakan DNS-01 memang bisa melewati masalah web server sama sekali, namun metode tersebut membutuhkan integrasi API DNS yang memiliki risiko keamanan tersendiri jika kredensial tersimpan di server produksi. Solusi paling stabil dan bersih untuk metode HTTP-01 sebenarnya sangat sederhana: biarkan port 80 melakukan tugas pengalihan ke HTTPS untuk semua trafik publik, tetapi kecualikan secara eksplisit jalur verifikasi ACME. Jalur /.well-known/acme-challenge/ harus selalu dilayani secara lokal dari direktori webroot langsung lewat HTTP biasa tanpa aturan rewrite apa pun. Berikut contoh penerapan pengecualian direktori challenge pada blok virtual host Nginx port 80:
NGINX
server {
    listen 80;
    server_name example.com www.example.com;

    # Layani validasi ACME langsung dari folder tanpa redirect
    location ^~ /.well-known/acme-challenge/ {
        root /var/www/html;
        default_type 'text/plain';
        try_files $uri =404;
    }

    # Alihkan seluruh request lainnya ke HTTPS
    location / {
        return 301 https://hostrequest_uri;
    }
}
Operator ^~ pada Nginx memastikan bahwa jika URI request diawali dengan path challenge tersebut, Nginx akan langsung berhenti mencari blok lokasi ekspresi reguler lain dan langsung menyajikan file teks dari direktori /var/www/html. Trafik umum untuk halaman website tetap dialihkan secara aman ke HTTPS melalui blok location / di bawahnya. Pendekatan serupa juga dapat diterapkan pada Apache melalui modul rewrite dengan menambahkan RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/ persis sebelum baris RewriteRule yang memaksakan pengalihan ke protokol HTTPS. Mengamankan jalur komunikasi website dengan HTTPS memang sudah menjadi standar mutlak saat ini. Namun, web server tetap membutuhkan satu celah kecil yang terbuka bagi otoritas sertifikat untuk memeriksa kepemilikan domain Anda. Memberikan pengecualian khusus pada direktori /.well-known/acme-challenge/ memastikan pengunjung website Anda selalu menikmati koneksi terenkripsi tanpa harus mengorbankan otomatisasi perpanjangan sertifikat di masa mendatang.