SSL/HTTPS, Cloudflare Proxy, dan DNS Configuration
Mengatur sertifikat SSL, memilih mode SSL Cloudflare yang benar, serta menghindari mixed content dan redirect loop.
HTTPS melindungi data dan meningkatkan kepercayaan pengguna. Dengan Cloudflare dan reverse proxy,
SSL bisa diatur otomatis. Namun konfigurasi yang salah sering menyebabkan redirect loop atau
502.
Sertifikat SSL/TLS
Sertifikat berisi:
- Nama domain yang dilindungi.
- Public key.
- Masa berlaku.
- Tanda tangan Certificate Authority (CA).
Client memverifikasi sertifikat ke CA tepercaya. Sertifikat kedaluwarsa atau tidak cocok domain akan memicu peringatan browser.
Let's Encrypt
Let's Encrypt adalah CA gratis yang menerbitkan sertifikat melalui protokol ACME.
| Metode challenge | Cara kerja | Cocok untuk |
|---|---|---|
| HTTP-01 | File verifikasi di port 80 | Server dengan public IP |
| DNS-01 | Record TXT di DNS | Server tanpa public IP, wildcard |
NPM dan banyak tool lain menangani permintaan serta perpanjangan otomatis.
Wildcard certificate
Sertifikat wildcard (*.example.com) memerlukan DNS-01 challenge. Ini berguna untuk banyak
subdomain tanpa menerbitkan sertifikat satu per satu.
Mode SSL Cloudflare
Cloudflare punya beberapa mode enkripsi antara client–Cloudflare dan Cloudflare–origin.
| Mode | Client–Cloudflare | Cloudflare–Origin | Rekomendasi |
|---|---|---|---|
| Off | HTTP | HTTP | Jangan dipakai |
| Flexible | HTTPS | HTTP | Hindari |
| Full | HTTPS | HTTPS (sertifikat apa saja) | Kurang ketat |
| Full (strict) | HTTPS | HTTPS dengan sertifikat valid | Disarankan |
Mengapa Flexible berbahaya?
Dengan Flexible, Cloudflare mengirim trafik ke origin lewat HTTP. Jika origin juga memaksa redirect ke HTTPS, terjadi redirect loop karena Cloudflare terus mengirim HTTP.
Browser --HTTPS--> Cloudflare --HTTP--> Origin --redirect HTTPS--> Cloudflare --HTTP--> ...Gunakan Full (strict) dan pasang sertifikat valid di origin (Let's Encrypt atau Cloudflare Origin Certificate).
Cloudflare Origin Certificate
Sertifikat ini diterbitkan Cloudflare untuk komunikasi Cloudflare–origin.
- Buka SSL/TLS → Origin Server → Create Certificate.
- Pilih hostname yang dicakup.
- Simpan certificate dan private key.
- Pasang di Nginx/NPM.
- Set mode SSL ke Full (strict).
Sertifikat ini hanya dipercaya oleh Cloudflare, bukan browser umum. Itu tidak masalah karena browser melihat sertifikat edge Cloudflare.
Pengaturan penting di Cloudflare
| Pengaturan | Fungsi |
|---|---|
| Always Use HTTPS | Redirect HTTP ke HTTPS |
| Automatic HTTPS Rewrites | Perbaiki tautan http di halaman |
| HSTS | Paksa browser selalu HTTPS |
| Minimum TLS Version | Tolak TLS lama |
| Opportunistic Encryption | Optimasi koneksi |
HSTS bersifat permanen di browser
Aktifkan HSTS hanya setelah HTTPS benar-benar stabil. Browser akan menolak akses HTTP selama masa HSTS, dan sulit dibatalkan di sisi client.
Mixed content
Mixed content terjadi saat halaman HTTPS memuat resource HTTP (gambar, script, CSS). Browser modern memblokirnya.
Cek di DevTools → Console. Perbaikan:
- Ubah URL resource menjadi
https://. - Gunakan path relatif.
- Aktifkan Automatic HTTPS Rewrites di Cloudflare.
- Pastikan aplikasi menghasilkan URL HTTPS (header
X-Forwarded-Proto).
Redirect loop
Penyebab umum:
- Cloudflare mode Flexible + origin redirect HTTPS.
- Aplikasi memaksa HTTPS tetapi tidak mengenali
X-Forwarded-Proto. - Aturan redirect berlapis di NPM dan Cloudflare.
Solusi:
- Gunakan Full (strict).
- Teruskan header
X-Forwarded-Proto. - Pilih satu tempat untuk redirect (Cloudflare atau origin).
Praktik: mengamankan aplikasi
- Pastikan DNS
app.example.commengarah ke server. - Di NPM, terbitkan sertifikat Let's Encrypt (DNS challenge bila perlu).
- Di Cloudflare, set SSL/TLS ke Full (strict).
- Aktifkan Always Use HTTPS.
- Uji:
curl -I http://app.example.com curl -I https://app.example.com openssl s_client -connect app.example.com:443 -servername app.example.com - Pastikan HTTP redirect ke HTTPS dan sertifikat valid.
- Cek DevTools tidak ada mixed content.
Troubleshooting
| Gejala | Cek |
|---|---|
ERR_TOO_MANY_REDIRECTS | Mode SSL, aturan redirect |
526 Invalid SSL certificate | Sertifikat origin tidak valid |
525 SSL handshake failed | Origin tidak mendukung TLS |
| Peringatan sertifikat | Domain tidak cocok/kedaluwarsa |
| Mixed content | URL resource, header proxy |
Ringkasan
- HTTPS memakai sertifikat TLS; Let's Encrypt menyediakan sertifikat gratis.
- Gunakan Cloudflare Full (strict) dan sertifikat valid di origin.
- Hindari Flexible karena memicu redirect loop dan trafik tidak terenkripsi.
- Perhatikan mixed content, HSTS, dan header proxy.
Selanjutnya
Terbitkan layanan tanpa public IP di Cloudflare Tunnel untuk Server Tanpa Public IP.
Reverse Proxy dan Nginx Proxy Manager
Memahami reverse proxy, memasang Nginx Proxy Manager dengan Docker, dan meneruskan domain ke aplikasi di VM/LXC.
Cloudflare Tunnel untuk Server Tanpa Public IP
Menghubungkan aplikasi lokal ke internet melalui Cloudflare Tunnel tanpa membuka port atau memiliki public IP.