Konfigurasi HTTPS di Web Server Apache pada Ubuntu Server - Part 2


Setelah di artikel sebelumnya dibahas bagaimana menginstall aplikasi openssl dan mengaktifkan modul SSL pada web server apache, maka pada artikel kali ini saya akan membahas bagaimana membuat sendiri kunci dan sertifikat untuk enkripsi yang akan digunakan untuk pengamanan data melalui metode PKI (Public Key Infrastructure). Pertama saya akan membuat folder dengan nama ssl untuk menampung sertifikat dan kunci enkripsi dibawah folder konfigurasi apache dengan perintah:

 sudo mkdir /etc/apache2/ssl

kemudian saya akan membuat kunci dan sertifikat enkripsi dengan perintah;

 sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

perintah tersebut akan membuat kunci enkripsi dan sertifikat berupa file dengan nama apache.crt dan apache.key yang disimpan di dalam folder /etc/apache2/ssl/ yang telah dibuat sebelumnya. Berikut informasi dari opsi-opsi pada perintah tersebut:
  • openssl: adalah aplikasi yang akan kita gunakan untuk membuat kunci dan sertifikat enkripsi
  • req -x509 -nodes: adalah perintah pembuatan sertifikat.
  • -days 365: adalah masa berlaku setiap sertifikat yang digunakan klien (365 hari sejak digunakan).
  • -newkey rsa:2048: adalah private key yang digunakan untuk mengenkripsi data yang akan dikirimkan.
  • -keyout: adalah output key yang kita buat untuk melakukan enkripsi.
  • -out: adalah output sertifikat yang kita buat untuk melakukan enkripsiSetelah perintah tersebut dijalankan anda akan diminta untuk mengisi beberapa informasi yang akan diisi di dalam sertifikat sebagai informasi yang menyediakan kunci enkripsi tersebut, seperti yang saya gunakan dibawah ini sebagai contoh:

Country Name (2 letter code) [AU]:ID
State or Province Name (full name) [Some-State]:DIY
Locality Name (eg, city) []:Yogyakarta
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:IT Department
Common Name (e.g. server FQDN or YOUR name) []:192.168.0.252
Email Address []:email@newbienote.com
dari perintah tersebut akan dibuat dua file yaitu apache.srt dan apache.key yang tersimpan di dalam folder /etc/apache2/ssl/ yang akan digunakan untuk enkripsi oleh klien yang mengakses protokol HTTPS di web server apache. Kemudian saya harus mengedit file default-ssl.conf yang berlokasi di /etc/apache2/sites-available/default-ssl.conf dengan perintah:

 sudo vim /etc/apache2/sites-available/default-ssl.conf

kemudian tambahkan tanda  # di bagian:

 SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
 SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

menjadi:

 #SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
 #SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key


kemudian tambahkan konfigurasi di bawah ini:

 SSLCertificateFile /etc/apache2/ssl/certs/apache.crt
 SSLCertificateKeyFile /etc/apache2/ssl/apache.key

simpan, lalu aktifkan konfigurasi tersebut dengan perintah:

 sudo a2ensite default-ssl.conf


kemudian restart web server apache tersebut dengan perintah:

 sudo service apache2 restart


Setelah berhasil restart, maka mari kita coba layanan HTTPS tersebut melalui browser. Ketika pertama kali mengakses alamat IP pada web server Apache yang sudah saya daftarkan dan tambahkan fasilitas HTTPS tersebut, maka akan terlihat tampilan seperti pada gambar di bawah ini:


saya mengakses layanan HTTPS tersebut menggunakan browser chrome, silakan klik opsi advance seperti yang tertampil pada opsi di bagian bawah, sehingga terlihat seperti pada gambar di bawah ini:



silakan pilih opsi Proceed to x.x.x.x (unsafe) , maka browser akan menginstall sertifikat yang tadi telah kita buat dan menggunakan kunci yang juga kita generate sebelumnya untuk digunakan sebagai kunci enkripsi. Setelah itu anda akan di redirect ke halaman yang seharusnya anda tujua seperti yang terlihat pada gambar di bawah ini:


disitu dapat anda lihat bahwa ada logo gemboknya, (walaupun dicoret) :-P. Jika di klik akan terlihat informasi seperti berikut:


Dari situ terlihat informasi bahwa identitas tersebut belum di verified, karena sertifikat yang kita keluarkan tersebut belum diverifikasi oleh pihak ketiga yang legal. Untuk mendapatkan verifikasi sertifikat, kita harus membeli jasanya di penyedia seperti godaddy, digicerts dan lain-lain. 

Kemudian anda bisa melihat di bagian bawah bahwa komunikasi data yang anda bangun dari klien ke web server telah diamankan menggunakan enkripsi. Jika sudah begitu, berarti saya telah berhasil membangun HTTPS pada web server apache yang saya gunakan. Silakan anda coba sendiri di web server apache anda. Terima kasih telah berkunjung :-)

Beberapa artikel terkait keamanan di blog ini:

Comments