Cara Install HTTPS di localhost

*Hypertext Transfer Protocol Secure (HTTPS)* adalah versi terenkripsi dari protokol HTTP. Enkripsinya menggunakan protokol Secure Sockets Layer (SSL), atau yang lebih baru Transport Layer Security (TLS), sering juga disebut sebagai *HTTP over SSL* atau *HTTP over TLS*. Secara default HTTPS berjalan pada port 443.

-Mengapa Harus HTTPS?-

Faktor penting mengapa harus menggunakan HTTPS:

· *Keamanan* – Mengamankan data dengan metode enkripsi yang ditransmisikan antara browser dengan server. Menjaga integritas website dari peretas yang dapat menginjeksi malware. Melindungi website dan pengunjung dari kenakalan provider internet yang memasukkan iklan mereka. · *SEO* – Sejak tahun 2014 Google sudah mulai memberikan peringkat lebih tinggi kepada website yang memakai HTTPS. · *Web Masa Depan* – Teknologi web masa depan, mulai dari API, AMP, PWA semuanya mengharuskan menggunakan HTTPS.

-Perlukah HTTP di localhost (development server)?-

Tentu saja perlu untuk menguji aplikasi sebelum berjalan di production server apakah tidak ada masalah. Sehingga tidak perlu langsung mengujinya di production server, cukup di development server untuk pengujian tahap pengembangan.

-Tool apa yang digunakan?-

Tool yang dapat digunakan untuk membuat HTTPS dapat berjalan di localhost yaitu *mkcert*. mkcert adalah sebuah tool untuk membuat sertifikat SSL untuk HTTPS secara lokal dan dipercaya oleh web browser. mkcert dapat membuat sertifikat untuk host localhost, custom host, atau IP address seperti 127.0.0.1. mkcert mendukung sistem operasi Linux, macOS, dan Windows.

-Install HTTPS di localhost Linux-

Tutorial ini menggunakan:

· OS Linux Ubuntu 16.04 64-bit · brew · mkcert · Apache · Mozilla Firefox

Install brew

mkcert diinstall via brew package manager. Install brew terlebih dahulu, baca tutorial *Cara Install brew di Linux*.

Install mkcert

Install paket dependensi.

[INPUT]

1 sudo apt-get install libnss3-tools

Install mkcert via brew.

[INPUT]

1 $ brew install mkcert

Hasilnya

[INPUT]

1 2 3 4 5 Updating Homebrew… ==> Downloading https://linuxbrew.bintray.com/bottles/mkcert-1.2.0.x86_64_linux.bottle.tar.gz ######################################################################## 100.0% ==> Pouring mkcert-1.2.0.x86_64_linux.bottle.tar.gz /home/linuxbrew/.linuxbrew/Cellar/mkcert/1.2.0: 6 files, 4.3MB

Install Certificate Authority (CA).

[INPUT]

1 $ mkcert -install

Hasilnya

[INPUT]

1 2 3 4 5 Created a new local CA at “/home/musa/.local/share/mkcert” [sudo] password for musa: The local CA is now installed in the system trust store! The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! The local CA is now installed in Java’s trust store!

Selanjutnya membuat certificate untuk localhost

[INPUT]

1 $ mkcert localhost

Hasilnya

[INPUT]

1 2 3 4 5 6 Using the local CA at “/home/musa/.local/share/mkcert”   Created a new certificate valid for the following names – “localhost”   The certificate is at “./localhost.pem” and the key at “./localhost-key.pem”

Terdapat dua file yang dihasilkan, certificate localhost.pem dan key localhost-key.pem. Semuanya berada di folder tempat menjalankan perintah.

Konfigurasi Apache untuk HTTPS

Install Apache.

[INPUT]

1 sudo apt-get install apache2

Memindahkan certificate dan key.

[INPUT]

1 2 sudo mv localhost.pem /etc/ssl/certs sudo mv localhost-key.pem /etc/ssl/private

Konfigurasi virtualhost localhost untuk port 443 (HTTPS).

[INPUT]

1 sudo nano /etc/apache2/sites-available/default-ssl.conf

Cari opsi certificate dan ubah seperti di bawah ini.

[INPUT]

1 2 SSLCertificateFile /etc/ssl/certs/localhost.pem SSLCertificateKeyFile /etc/ssl/private/localhost-key.pem

Aktifkan modul SSL untuk Apache dan virtualhost default-ssl.

[INPUT]

1 2 3 4 sudo a2enmod ssl sudo a2ensite default-ssl.conf sudo systemctl restart apache2 sudo systemctl status apache2

Pengujian

Akses https://localhost di browser, hasilnya seperti gambar di bawah ini.

HTTPS di localhost Apache

HTTPS untuk Custom VirtualHost

Membuat certificate untuk virtualhost musaamin.oksip.

[INPUT]

1 $ mkcert musaamin.oksip

Hasilnya

[INPUT]

1 2 3 4 5 6 Using the local CA at “/home/musa/.local/share/mkcert”   Created a new certificate valid for the following names – “musaamin.oksip”   The certificate is at “./musaamin.oksip.pem” and the key at “./musaamin.oksip-key.pem”

Memindahkan certificate.

[INPUT]

1 2 sudo mv musaamin.oksip.pem /etc/ssl/certs sudo mv musaamin.oksip-key.pem /etc/ssl/private

Membuat folder untuk virtualhost musaamin.oksip.

[INPUT]

1 sudo mkdir /var/www/html/musaamin.oksip

Buat file index.html.

[INPUT]

1 sudo nano /var/www/html/musaamin.oksip/index.html

Isinya

[INPUT]

1 musaamin.oksip

Membuat konfigurasi virtualhost di Apache.

[INPUT]

1 sudo nano /etc/apache2/sites-available/musaamin.oksip.conf

Isinya

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23     ServerName musaamin.oksip     ServerAlias www.musaamin.oksip       RewriteEngine on     RewriteCond %{SERVER_NAME} =www.musaamin.oksip [OR]     RewriteCond %{SERVER_NAME} =musaamin.oksip     RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]       ServerName musaamin.oksip     ServerAlias www.musaamin.oksip     DocumentRoot /var/www/html/musaamin.oksip       ErrorLog /var/log/apache2/musaamin.oksip_error.log     CustomLog /var/log/apache2/musaamin.oksip_access.log combined       SSLCertificateFile /etc/ssl/certs/musaamin.oksip.pem     SSLCertificateKeyFile /etc/ssl/private/musaamin.oksip-key.pem

Mengaktifkan virtualhost musaamin.oksip.

[INPUT]

1 sudo a2ensite musaamin.oksip.conf

Restart Apache.

[INPUT]

1 2 sudo systemctl restart apache2 sudo systemctl status apache2

Memasukkan host musaamin.oksip ke dalam konfigurasi hosts.

[INPUT]

1 sudo nano /etc/hosts

Tambahkan

[INPUT]

1 127.0.0.1 musaamin.oksip

Pengujian, akses http://musaamin.oksip, harus redirect ke https://musaamin.oksip sesuai dengan konfigurasi pada virtualhost Apache.

HTTPS di musaamin.oksip Apache

Selamat mencoba 🙂

Leave a Reply

Your email address will not be published.