Coba Instal SSL di HAProxy

Hai semuanya, apa kabar? Kali ini saya mau sharing hasil percobaan saya instal HAProxy dan SSL-nya.

Skenarionya adalah saya punya dua CT, yaitu HAProxy dan NGINX (web server). Rencananya adalah untuk trafik HTTPS ke HAProxy nantinya diarahkan ke NGINX.

SSL-nya sudah saya siapkan terlebih dahulu. Konfigurasi HAProxy juga butuh file gabungan dari private key dan full chain. Bisa dilakukan dengan perintah berikut:

cat privkey.pem fullchain.pem > haproxy.pem

File konfigurasi HAProxy terletak di /etc/haproxy/haproxy.cfg. Disesuaikan filenya. Di bagian bawah, kita masukkan blok untuk frontend dan backend.

Konfigurasi di file ini fungsinya adalah memeriksa koneksi HTTPS di server HAProxy lalu diteruskan ke web server (dalam hal ini adalah NGINX).

Berikut contoh blok-nya.

frontend https_in
[tab] bind *:443 ssl crt /etc/letsencrypt/live/haproxy.zaidan.web.id/haproxy.pem
[tab] default_backend web_backend
backend web_backend
[tab] server nginx1 192.168.9.3:80 check

  • Fungsi blok frontend adalah untuk menentukan titik trafik dari luar yang mengarah ke HAProxy.
  • bind *:443 ssl crt /etc/letsencrypt/live/haproxy.zaidan.web.id/haproxy.pem
    Artinya HAProxy akan listen pada port 443 dari semua IP, dan juga mengarahkan ke file gabungan (haproxy.pem).
  • Fungsi blok backend adalah menetapkan bahwa semua trafik yang masuk melalui frontend akan diteruskan ke backend
  • Pada blok backend juga ditetapkan alamat IP dan port dari server tujuan.

Ilustrasi alur trafik:

User --HTTPS--> HAProxy --HTTP--> Web Server

Untuk cek validasi konfigurasi bisa menggunakan perintah:

haproxy -c -f /etc/haproxy/haproxy.cfg

Lalu restart HAProxy-nya:

systemctl restart haproxy

Intinya, konfigurasi sudah selesai. Namun karena pengujian dilakukan secara lokal (domain hanya digunakan untuk validasi SSL), maka ketika dicoba di-cek di web browser akan muncul “Not Secure”. Saat saya coba untuk akses IP HAproxy, yang muncul adalah halaman NGINX.

Untuk tulisan kali ini sampai di sini dulu ya. Sampai jumpa. Bye.

Leave a Reply

Your email address will not be published. Required fields are marked *