Security / Security Guide
HSTS di Cloudflare: rollout aman tanpa mengunci subdomain
Aktifkan HSTS secara bertahap dengan memahami max-age, includeSubDomains, preload, dan cara memverifikasi header sebelum membuat kebijakan sulit dibatalkan.
Menengah · 18 menit · Latihan pembelajaran · 22 September 2026
Tujuan latihanMenyusun rollout HSTS yang aman di Cloudflare, memverifikasi header yang diterima browser, dan mengenali kondisi yang dapat membuat host atau subdomain tidak dapat diakses.
PersiapanDomain milik sendiri yang sudah stabil di HTTPS. Idealnya record web sudah Proxied melalui Cloudflare, sertifikat valid, dan tidak ada redirect HTTPS ke HTTP. Jangan menerapkan perubahan pada domain produksi sebelum memahami dampak max-age.
HTTP request→
HTTPS + HSTS→
Browser remembers HTTPS
Masalah
HSTS terlihat sederhana karena hanya menambahkan header Strict-Transport-Security, tetapi efeknya disimpan oleh browser. Setelah browser menerima policy tersebut melalui HTTPS, browser dapat memaksa koneksi berikutnya menggunakan HTTPS dan menolak bypass terhadap error sertifikat. Kesalahan konfigurasi karena itu berbeda dari redirect biasa: rollback di server tidak selalu langsung menghapus policy yang sudah tersimpan di browser.
Persiapan: pastikan HTTPS benar-benar stabil
Sebelum mengaktifkan HSTS, pastikan hostname utama dapat diakses melalui HTTPS dengan sertifikat yang valid, HTTP diarahkan ke HTTPS, dan tidak ada jalur yang mengubah HTTPS kembali ke HTTP. Cloudflare juga memperingatkan agar record yang sudah mengandalkan HSTS tidak dipindah dari Proxied ke DNS only, zone tidak dipause, dan nameserver tidak dipindahkan tanpa rencana karena browser tetap mengharapkan HTTPS selama max-age masih berlaku.
curl -I http://example.com
curl -I https://example.com
1. Cek apakah HSTS sudah dikirim
Jangan berasumsi HSTS belum aktif hanya karena setting Cloudflare belum pernah Anda nyalakan. Header bisa berasal dari origin web server atau Response Header Transform Rule. Jalankan request HTTPS dan cari Strict-Transport-Security. Jika header sudah ada, catat nilainya sebelum membuat policy baru agar Anda tidak mengelola dua sumber konfigurasi yang berbeda.
curl -sS -I https://example.com | grep -iE "^(HTTP/|strict-transport-security:|server:)"
2. Pahami arti max-age sebelum memilih nilainya
Directive max-age menentukan berapa detik browser mengingat host sebagai HSTS host. Nilai yang lebih panjang memberi perlindungan lebih lama tetapi juga memperpanjang dampak jika HTTPS kemudian rusak. Untuk rollout baru, gunakan periode bertahap dan naikkan hanya setelah HTTPS stabil. Cloudflare menyediakan pilihan hingga 12 bulan; dokumentasi use case Cloudflare menyarankan mulai lebih pendek lalu meningkatkan ke 12 bulan setelah stabil.
3. Jangan aktifkan includeSubDomains tanpa inventaris subdomain
includeSubDomains membuat policy parent berlaku ke seluruh subdomain. Sebelum menyalakannya, inventaris subdomain seperti www, api, mail, cpanel, webmail, staging, atau hostname legacy. Setiap subdomain yang masih HTTP-only berpotensi menjadi tidak dapat diakses oleh browser yang sudah menerima policy parent. Jika Anda belum yakin semua subdomain mendukung HTTPS, biarkan opsi ini OFF.
4. Perlakukan preload sebagai keputusan terpisah
Preload mengurangi risiko downgrade pada kunjungan pertama karena browser dapat membawa daftar HSTS sebelum pengguna pernah mengakses domain. Namun preload jauh lebih sulit dibatalkan daripada header biasa dan mensyaratkan konfigurasi yang lebih ketat. Jangan menyalakannya hanya karena tersedia di dashboard. Pastikan seluruh domain dan subdomain siap untuk HTTPS jangka panjang, max-age memenuhi syarat, dan Anda memahami proses pengajuan serta penghapusan dari preload list.
5. Konfigurasi awal yang konservatif di Cloudflare
Untuk domain yang baru memulai HSTS, pola konservatif adalah mengaktifkan HSTS pada apex tanpa includeSubDomains dan tanpa preload terlebih dahulu. No-Sniff dapat diaktifkan bila belum dikirim dari origin. Setelah beberapa periode operasi tanpa incident TLS atau redirect, max-age dapat dinaikkan. Hindari mengubah beberapa komponen sekaligus agar sumber masalah mudah dilacak.
6. Verifikasi dari sisi client setelah perubahan
Setelah menyimpan konfigurasi, lakukan request HTTPS baru dan periksa nilai header. Pastikan hanya policy yang memang Anda inginkan yang muncul. Header HSTS hanya efektif ketika diterima melalui HTTPS; browser mengabaikannya jika dikirim melalui HTTP. Lakukan juga request ke HTTP untuk memastikan redirect masih membawa pengguna ke HTTPS.
curl -I https://example.com
curl -I http://example.com
7. Bedakan masalah HSTS dari masalah sertifikat
Jika browser menolak situs setelah HSTS aktif, jangan langsung menghapus DNS atau mematikan proxy. Periksa validitas sertifikat, hostname pada certificate, redirect chain, dan apakah origin/edge masih menyediakan HTTPS. HSTS justru membuat browser tidak menawarkan tombol bypass untuk error TLS tertentu, sehingga error sertifikat yang sebelumnya bisa dilewati menjadi blocking.
Kesalahan umum
Kesalahan yang sering terjadi adalah mengaktifkan includeSubDomains tanpa mengecek hostname lama, menyalakan preload terlalu dini, menganggap max-age dapat dicabut seketika, serta mempunyai header HSTS dari origin sekaligus Cloudflare dengan nilai berbeda. Cloudflare juga mencatat bahwa Response Header Transform Rule dapat menimpa nilai yang diatur dari menu HSTS sehingga konfigurasi dashboard dan header aktual bisa tidak sama.
Checklist verifikasi
Pastikan HTTPS apex mengembalikan 200/3xx yang diharapkan, HTTP redirect ke HTTPS, sertifikat valid, Strict-Transport-Security memiliki max-age yang direncanakan, includeSubDomains hanya aktif jika seluruh subdomain siap, preload tetap OFF sampai ada kebutuhan dan kesiapan jangka panjang, serta tidak ada Transform Rule atau origin header yang menghasilkan policy berbeda. Simpan nilai header sebelum dan sesudah perubahan sebagai bukti konfigurasi.
Pelajaran
HSTS bukan sekadar redirect HTTPS. Ia adalah instruksi persisten kepada browser. Rollout yang aman dimulai dari HTTPS yang stabil, verifikasi header existing, max-age bertahap, lalu evaluasi terpisah untuk includeSubDomains dan preload. Semakin besar scope policy, semakin penting inventaris hostname dan rencana rollback sebelum perubahan diterapkan.
Pilih materi berikutnya →