HTTP dan HTTPS Mysql

Materi

A. HTTP

Hypertext Transfer Protocol (HTTP) adalah sebuah protokol jaringan lapisan aplikasi yang digunakan untuk sistem infromasi terdistribusi, kolaboratif dan menggunakan hipermedia.

Penggunanya banyak pada pengembalian sumber daya yang saling terhubung dengan tautan, yang disebut dengan dokumen hiperteks. Hingga kini, ada dua versi mayor dari protokol HTTP yakni HTTP/1.0 yang menggunakan koneksi terpisah untuk setiap dokumen, dan HTTP/1.1 yang dapat menggunakan koneski yang sama untuk melakukan transaksi. Dengan demikian HTTP/1.1 bisa lebih cepat karena memenag tidak membuang waktu untuk melakukan koneksi berulang ulang.

HTTP tidak lah terbatas untuk penggunaan dengan TCP/IP, meskipun HTTP merupakan salah satu protokol aplikasi TCP/IP paling populer melalui internet. Memang HTTP dapat diimplementasikan diatas protokol lainnya di atas internet, tapi HTTP membutuhkan sebuah protokol lapisan transport yang dapat diandalkan. Protokol lainnya yang menyediakan layanan dan jaminan seperti itu juga dapat digunakan.

B. HTTPS

Hypertext Transfer Protocol Secure (HTTPS) adalah kombinasi dari HTTP dan Protokol Kriptografi. Sambungan HTTPS sering digunakan untuk pembayaran transaksi (uang, data penting) di internet. HTTPS dapat diartikan sebagai bentuk protokol internet yang paling valid dan paling aman.

HTTPS ini akan melindungi Integritas serta kerahasian antara client dan server. Sehingga penggunaan HTTPS ini sangat sulit untuk dibajak oleh orang lain saat proses transaksi berlangsung. Protokol keamanan yang biasanya digunakan dalam HTTPS adalah SSL dan TLS

C. Perbandingan HTTP dan HTTPS

  1. Port

Hal pertama yang menjadi pembeda adalah dibagian port untuk mengirim data dan penerimaan data.

HTTP menggunakan port 80, dimana kondisi data masih menggunakan teks biasa (plainteks) sehingga dapat dibaca dengan jelas data apa yang sedang terjadi di jaringan.

HTTPS menggunakan port 443 dimana port ini lebih aman karena setiap komunikasi atau transfer data terenkripsi, sehingga tidak mudah dibaca pihak lain.

  1. SSL

SSL adalah metode akses website menggunakan sambungan protokol terenkripsi. HTTP adalah protokol yang belum memanfaatkan sertifikat keamanan SSL. Sedangkan HTTPS sudah menggunakan SSL/TLS untuk enkripsi data.

Dengan SSL aktif apada HTTPS maka terjadi transaksi data maka semua data yang dikirim dan diterima akan terenkripsi.

  1. Keamanan Data

HTTPS menggunakan 3 prosedur keamanan data yaitu CIA (Confidentiality, Intergrity, Authentication) yang mana hal ini tidak terpadat pada protokol HTTP.

Implementasi

A. Koneksi HTTP ke Database

set up system:

  1. Web Server (Ubuntu) yang sudah terinstal Mysql Client

image

  1. XAMPP sebagai database

Perlu Configurasi di bagian Mysql yaitu perlu di enable di bagian bind address dan ubah menjadi bind-address=”0.0.0.0” agar semua ip dapat mengakses mysql server nya. Atau dibuat secara spesifik juga bisa tinggak ubah ip 0.0.0.0 menjadi ip dari web server atau server yang menginstal mysql-client

image

Lokasi file secara default “C:\xampp\mysql\bin\my.ini”

Kemudian Perlu juga untuk mebuat user baru dengan hostnya IP dari Web Server (Ubuntu Server) dan berikan Privilage

image

  1. Wireshark sebagai analisis paket yang sedang terjadi antara Client dengan Server.
    • Buka Wireshark kemudian pilih trafic yang mau di analisis

Disini saya akan milih trafic Ethernet karena koneksi antara Database dan Webserver (Ubuntu Server) menggunakan jaringan Host-only

image

image

image

Dilihat dari gambar diatas kita tidak menggunakan protokol SSL/TLS sehinggak koneksi tidak terenkripsi atau menggunakan protokol HTTP

Saya menjalankan perintah seperti dibawah;

image

Dan liat apakah paket berupa plainteks atau sudah terenkripsi koneksi dari client dan server

image

Analisis;

Dapat dilihat dari gambar diatas bahwa perintah yang kita jalankan di mysql server dapat terdeteksi oleh wireshark dan berupa plainteks tanpa ada nya enkripsi.

image

Analisis ;

Respond dari server pun berupa plainteks sehingga semua dapat terbaca dengan jelas sehingga kita dapat melihat value dari perintah yang dijalankan diatas.

Pengukuran performansi Mysql tanpa SSL

image

B. Koneksi HTTS ke Database

Setup System :

  1. Web Server (Ubuntu) yang sudah terinstal Mysql Client image

  2. Database Server (Ubuntu) Perlu Configurasi di bagian Mysql yaitu perlu di enable di bagian bind address dan ubah menjadi bind-address=”0.0.0.0” agar semua ip dapat mengakses mysql server nya.

Atau dibuat secara spesifik juga bisa tinggak ubah ip 0.0.0.0 menjadi ip dari web server atau server yang menginstal mysql-client

image

Lokasi file secara default “/etc/mysql/mysql.conf.d/mysqld.cnf”

Kemudian Perlu juga untuk mebuat user baru dengan hostnya, IP dari Web Server (Ubuntu Server) dan berikan Privilage

image

  1. Install SSL Database Mysql

Secara default, ketika kita menginstall mysql-server di Database server akan secara otomatis terinstall sertifikat SSL karena itu sudah menjadi standart pada MySql Database.

Untuk memeriksanya kita dapat menggunakan perintah *“sudo find /var/lib/mysql -name ‘.pem’ -ls” **

image

Dapat dilihat dari gambar diatas bahwa ssl sudah ikut terinstall saat menginstall mysql-server. Dan untuk memastikan lagi apakah SSL ini sudah terpasang di mysql-server. Kita dapat menjalankan perintah **‘show variables like ‘%ssl%’; **

image

image

Dapat dilihat dari kedua gambar diatas bahwa didalam mysql nya sudah ada SSL dengan menggunakan TLS_AES_256_GCM_SHA384.

  1. Wireshark sebagai analisis paket yang sedang terjadi antara Client dengan Server.
    • Buka Webserver dan jalankan perintah sudo tcpdump -i {interface} -s 65539 -w {nama file}

image

Gunakan extensi .pcap agar dapat di buka di wireshark

Perintah diatas digunakan untuk menangkap/record semua paket yang sedang terjadi pada interface tertentu.

image

image

Dan liat apakah paket berupa plainteks atau sudah terenkripsi koneksi dari client dan server

image

Analisis;

Dapat dilihat dari atas bahwa Protokol dari Mysql sudah berubah yaitu TLSv1.3 dan paket/data juga sudah terenkripsi sehinggak tidak dapat dibaca dengan mudah.

  1. Pengukuran Performansi

Pengukuran performansi Mysql menggunakan SSL

image

C. Perbandingan Performansi antara menggunakan SSL dengan tidak menggunakan SSL

Untuk pengukurannya kita mneggunakan perintah mysqlslap yang mana ini merupakan tools yang digunakan untuk menirukan beban klien pada server Mysql dan melaporkan waktu setiap tahapan yang dilewati.

Dilihat Performansi dari HTTP tanpa SSL:

Benchmark
    Average number of seconds to run all queries: 7.047 seconds
    Minimum number of seconds to run all queries: 5.703 seconds
    Maximum number of seconds to run all queries: 8.587 seconds
    Number of clients running queries: 20
  Average number of queries per client: 0

Dilihat Performansi HTTP dengan menggunakan SSL:

Benchmark
      Average number of seconds to run all queries: 6.904 seconds
      Minimum number of seconds to run all queries: 5.712 seconds
      Maximum number of seconds to run all queries: 9.238 seconds
      Number of clients running queries: 20
  Average number of queries per client: 0 

Analisis :

Untuk HTTPS cendrung membuthkan waktu lebih lama ketimbang HTTP karena HTTPS membutuhkan waktu untuk proses enkripsi data terlebih dahulu baru kemudian dikirim ke klien, sehingga membutuhkan waktu cukup lama.