in FOSS

Cara Install HTTPS di localhost

Cara Install HTTPS di localhost Apache

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.

$ sudo apt-get install libnss3-tools

Install mkcert via brew.

$ brew install mkcert

Hasilnya

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).

$ mkcert -install

Hasilnya

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

$ mkcert localhost

Hasilnya

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.

$ sudo apt-get install apache2

Memindahkan certificate dan key.

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

Konfigurasi virtualhost localhost untuk port 443 (HTTPS).

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

Cari opsi certificate dan ubah seperti di bawah ini.

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

Aktifkan modul SSL untuk Apache dan virtualhost default-ssl.

$ 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.

Cara Install HTTPS di localhost

HTTPS di localhost Apache

HTTPS untuk Custom VirtualHost

Membuat certificate untuk virtualhost musaamin.oksip.

$ mkcert musaamin.oksip

Hasilnya

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.

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

Membuat folder untuk virtualhost musaamin.oksip.

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

Buat file index.html.

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

Isinya

musaamin.oksip

Membuat konfigurasi virtualhost di Apache.

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

Isinya


    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.

$ sudo a2ensite musaamin.oksip.conf

Restart Apache.

$ sudo systemctl restart apache2
$ sudo systemctl status apache2

Memasukkan host musaamin.oksip ke dalam konfigurasi hosts.

$ sudo nano /etc/hosts

Tambahkan

127.0.0.1		musaamin.oksip

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

Cara Install HTTPS di localhost

HTTPS di musaamin.oksip Apache

Selamat mencoba 🙂

Write a Comment

Comment

  1. mas….tanya
    add domain caranya bagaimana? domain yang pertama pakai cloudflare.
    sekarang mau masuk cloudflare tdk bisa. klo dengan cara ini nanti semua domain yang sudah terpasang cloudflare apakah berubah?

    • pertanyaannya kurang jelas. add domain di mana, di cloudflare atau cpanel? masuk cloudflare, maksudnya tidak bisa login di cloudflare? domain yang memakai cloudflare, berarti untuk melakukan pengaturan dns record misal menambah subdomain semuanya dikonfigurasikan di cloudflare.

    • tutorial ini hanya untuk kebutuhan development di komputer sendiri (localhost). kalau sudah pakai domain internet, pakai SSL yang dikeluarkan oleh certificate authority yang dikenali oleh web browser. yang gratis bisa pakai SSL dari Let’s Encrypt.