Meningkatkan Kinerja Webserver dengan SSL Termination pada NGINX Load Balancer

How can we help?
< All Topics
Print

Meningkatkan Kinerja Webserver dengan SSL Termination pada NGINX Load Balancer

Setelah kita mengetahui tentang NGINX sebagai load balancer untuk membagi beban di antara webserver kita, faktor paling penting berikutnya yaitu bagaimana mengamankan sistem web kita tersebut. Salah satu cara paling esensialnya adalah dengan menggunakan protokol SSL atau Secure Sockets Layer.

SSL tidak hanya mengenkripsi data yang dikirim antara webserver dan pengakses, tetapi juga menyediakan autentikasi dan integritas data untuk memastikan bahwa data tersebut tidak dimanipulasi atau diubah selama transit antara webserver dan pengakses.

Namun, SSL dapat memperlambat kinerja website, terutama pada webserver yang memproses banyak permintaan sekaligus. Oleh karena itu, SSL termination dapat menjadi solusi untuk mengatasi masalah ini.


Ayo kita ketahui bersama tentang SSL termination pada NGINX Load Balancer, mengapa itu penting, bagaimana cara kerjanya, dan termasuk langkah-langkah implementasinya.

Pentingnya SSL Termination pada NGINX Load Balancer

Mengapa SSL termination di NGINX Load Balancer sangat penting? Salah satu keuntungannya adalah karena dapat meningkatkan kinerja website kita.

Dalam kasus NGINX LB tanpa SSL termination dan SSL sertifikat terpasang di server backend, pengakses akan mengenkripsi permintaannya sebelum mengirimkannya ke NGINX LB. Kemudian, NGINX LB akan meneruskan permintaan tersebut ke server backend tanpa melakukan dekripsi dan server backend akan melakukan dekripsi permintaan tersebut sebelum memprosesnya.

Ketika server backend mengirim responsnya kembali ke klien, respons tersebut akan dienkripsi oleh server backend sebelum dikirimkan ke NGINX LB. Kemudian, NGINX LB akan meneruskan respons tersebut ke klien tanpa melakukan dekripsi dan klien akan melakukan dekripsi respons tersebut setelah menerimanya.

Kondisi seperti ini memerlukan penggunaan resource komputasi tambahan oleh webserver dan perangkat pengakses. Proses ini dapat memakan waktu dan memerlukan penggunaan resource komputasi yang signifikan terutama jika website menerima banyak koneksi SSL/TLS pada satu waktu. Dalam beberapa kasus, hal ini berdampat pada lambatnya kinerja website.


Dengan menerapkan SSL termination pada NGINX LB, koneksi SSL/TLS dari pengakses ke server backend dihentikan pada NGINX LB. Dalam hal ini, NGINX LB bertindak sebagai proxy server yang menerima koneksi SSL/TLS dari pengakses dan melakukan enkripsi dan dekripsi data. Setelah itu, data dikirim ke server backend melalui koneksi HTTP biasa tanpa enkripsi dan dekripsi tambahan. Dengan demikian, server backend hanya perlu menangani koneksi HTTP biasa yang lebih ringan dan mengurangi beban kerja pada server backend.

Selain itu, SSL termination pada NGINX LB juga memudahkan manajemen sertifikat SSL di arsitektur load balancing yang kompleks, karena administrator dapat mengelola sertifikat secara terpusat dan memperbarui sertifikat dengan lebih mudah.

Langkah-langkah Implementasi

Untuk menerapkan SSL termination pada NGINX juga tergolong sangat mudah, activity point yang akan kita lakukan adalah sebagai berikut:

▶️ Menyiapkan NGINX

Pastikan NGINX terpasang di VM yang akan digunakan sebagai load balancer. Setelah itu, konfigurasikan server block NGINX untuk menentukan backend upstream yang akan dimasukkan ke dalam load balancer, serta jenis metode load balancer yang akan digunakan.

Jika Anda belum memahami cara melakukannya, Anda dapat mengakses tutorial NGINX sebagai load balancer berikut.

▶️ Membuat Sertifikat SSL/TLS untuk NGINX LB

Setelah itu, kita perlu membuat dan memasang sertifikat SSL/TLS pada VM NGINX load balancer ini. Ada dua cara untuk mendapatkan sertifikatnya, yaitu membeli dari penyedia sertifikat atau membuat sendiri. Dalam tutorial ini, kita akan menggunakan sertifikat SSL/TLS gratis dari Let’s Encrypt. Menginstal certbot dan plugin certbot untuk NGINX pada repositori Ubuntu bisa menggunakan perintah berikut:


    #  apt install certbot python3-certbot-nginx -y
     

Selanjutnya, jalankan perintah ini untuk memperoleh dan menginstal sertifikat SSL/TLS pada NGINX LB:


    # certbot --nginx --redirect --hsts --staple-ocsp -d yourdomain.com 
      --email your@email.com --agree-tos
     

Di mana penjelasan tiap sintaks-nya adalah sbb:

  • certbot: aplikasi client untuk penerbitan sertifikat SSL/TLS yang disediakan oleh Let’s Encrypt.
  • –nginx: opsi untuk mengkonfigurasi sertifikat dengan webserver NGINX.
  • –redirect: mengkonfigurasi server untuk melakukan redirect dari HTTP ke HTTPS.
  • –hsts: menambahkan header HTTP Strict Transport Security untuk memaksa pengakses untuk selalu terhubung ke situs melalui HTTPS.
  • –staple-ocsp: mengaktifkan dukungan OCSP stapling untuk mempercepat validasi sertifikat oleh web client.
  • -d diikuti dengan nama domain yang akan kita proteksi dengan SSL/TLS, bisa juga berupa daftar (dipisahkan oleh koma). Kita dapat menambahkan hingga 100 nama domain.
  • –email: Email yang digunakan untuk registrasi dan kontak pemulihan.
  • –agree-tos: menyetujui syarat dan ketentuan dari Let’s Encrypt.

Setelahnya, kita akan diminta untuk memilih apakah ingin menerima email dari EFF (Electronic Frontier Foundation). Pilih Y atau N.

Kemudian sertifikat TLS akan secara otomatis diperoleh dan dikonfigurasi untuk kita, ditandai dengan pesan di atas.

▶️ Periksa konfigurasi NGINX setelah instalasi SSL/TLS

Setelah SSL/TLS ditambahkan, konfigurasi server block akan tampak seperti ini:

Aktifitas Lebih Lanjut

Setelah berhasil menerapkan SSL termination pada VM NGINX LB, berikut beberapa kegiatan lanjutan yang dapat dilakukan untuk meningkatkan pengalaman dalam penggunaannya.

▶️ Tes Sertifikat TLS

Kunjungi ssllabs.com untuk melakukan pengujian sertifikat dan konfigurasi SSL/TLS kita. Dengan mengaktifkan HSTS, seharusnya kita dapat memperoleh nilai A+.

▶️ Pembaruan Otomatis Sertifikat SSL/TLS

Untuk memperbarui sertifikat Let’s Encrypt secara otomatis, kita dapat memanfaatkan tool cron untuk menjadwalkannya sesuai dengan keinginan kita. Pertama-tama, masuk dan edit file crontab menggunakan perintah berikut:


    # crontab -e
     

Kemudian, tambahkan baris cronjob berikut di bagian bawah file crontab.

Dengan melakukan hal ini, kita akan menjadwalkan pembaharuan sertifikat SSL/TLS tanpa menampilkan pesan keluaran, setiap hari pada pukul 00:00, dan kemudian me-reload konfigurasi NGINX menggunakan perintah systemctl reload nginx.

Untuk Anda yang belum familiar dengan cron dan cara menggunakannya, saya menyarankan untuk melihat tutorial saya tentang pemanfaatan cron pada link berikut.

Kesimpulan

Demikian tutorial SSL termination menggunakan NGINX LB yang dapat saya sampaikan. Dengan menggunakan teknik ini, kita dapat meningkatkan keamanan situs web kita namun dengan tetap menjaga performa dan kinerja dari website tersebut dalam melayani pengaksesnya.

Kunjungi tutorial kami lainnya, termasuk tutorial dasar NGINX LB dan Cronjob, yang dapat membantu Anda memahami topik ini dengan lebih baik di halaman knowledge base kami. Atau, Anda juga bisa kunjungi channel youtube Cloud Raya.

Table of Contents

Leave a Reply

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

Post comment

Ready, Set, Cloud

Ready, Set, Cloud