Checklist TLS dan HSTS Minimal buat VPS Sendiri

Ngurus SSL sendiri di VPS (bukan lewat platform otomatis kayak Vercel atau Netlify) berarti saya yang tanggung jawab penuh soal konfigurasi TLS-nya. Nggak ada tombol ajaib yang bikin semuanya beres otomatis begitu domain di-attach. Ini yang saya pasang di Nginx buat gookkis.com, dan alasannya masing-masing.
Certbot buat sertifikat, dan lupain
Let’s Encrypt via Certbot, auto-renewal lewat cron/systemd timer bawaan certbot. Sekali setup, saya nggak perlu mikirin lagi selama servernya jalan — nggak ada notifikasi “sertifikat mau expired” yang bikin panik tengah malam. Satu hal yang saya pelajari dari pengalaman awal-awal: pastiin renewal-nya beneran ke-test (certbot renew --dry-run), bukan cuma asumsi cron job-nya jalan. Saya pernah nemu server lama yang certbot-nya “terpasang” tapi timer systemd-nya mati gara-gara upgrade OS, dan baru ketauan pas sertifikatnya beneran expired.
Batasi protokol TLS
Saya set ssl_protocols TLSv1.2 TLSv1.3; — matiin TLS versi lama (1.0/1.1) yang udah dianggap nggak aman dan nggak didukung browser modern lagi. Nggak ada alasan buat tetep support protokol lama di situs baru; satu-satunya yang masih butuh itu biasanya browser jadul yang trafficnya ke situs personal kayak ini praktis nol.
HSTS header
Strict-Transport-Security dengan max-age=31536000; includeSubDomains maksa browser buat selalu connect via HTTPS ke domain ini (dan subdomain-nya) selama setahun ke depan, bahkan kalau user ngetik http:// manual. Ini nutup celah downgrade attack di request pertama — titik lemah klasik di mana attacker bisa intercept request HTTP awal sebelum sempet di-redirect ke HTTPS.
Header keamanan tambahan
X-Frame-Options: SAMEORIGIN buat cegah clickjacking, X-Content-Type-Options: nosniff buat cegah browser nebak-nebak MIME type file yang bisa disalahgunakan. Kecil, tapi gratis buat dipasang dan nggak ada downside-nya.
Redirect paksa
Semua request ke port 80 (http://) di-redirect 301 ke https:// di server block terpisah, sebelum request sempat kena block SSL manapun. Ini yang bikin HSTS di atas beneran efektif — tanpa redirect ini, request pertama yang masuk lewat http:// nggak pernah dapet kesempatan buat “ngajarin” browser soal HSTS-nya sama sekali.
Pas semua ini kepasang, saya coba scan pake SSL Labs — dapet A, bukan A+ (buat A+ butuh setup yang lebih rumit kayak OCSP stapling custom dan cipher suite yang di-tuning manual, plus HSTS preload list submission). Saya sengaja nggak ngejar A+ buat situs statis personal kayak ini; effort tambahannya nggak sepadan sama risiko yang beneran saya hadapi. Prioritasnya adalah nggak ada celah dasar yang kelewat, bukan optimasi ke level enterprise. Checklist simpel ini udah cover kebutuhan itu, dan saya lebih suka waktu saya kepake buat hal lain yang lebih kepake.