Wednesday, January 25, 2017

Membuat Self-Signed CA SSL dengan OpenSSL dan Implementasinya di Apache2 & NGINX ~ Pt.2

  No comments
Assalamu'alaikum Wr. Wb.
Setelah kita membuat Sertifikat Otoritas sendiri di Artikel saya sebelumnya, sekarang adalah pengimplementasiannya di Web Server. Disini saya akan menggunakan Apache2 dan NGINX (Baca: Engine X) untuk mendemonstrasikan cara pengimplementasiannya.

Siapkan File-file berikut ini (File-file yang sudah saya tunjukkan di Artikel Part 1)
1. smkn1pedan.ti.cert.pem (Site Certificate, Lokasi: intermediate/certs)
2. smkn1pedan.ti.key.pem (Site Private Key, Lokasi: intermediate/private)

Sebelum mulai mengkonfigurasi di sisi Web Server, pertama terlebih dulu Upload kedua file diatas ke server teman-teman ke Folder yang mudah diakses oleh Web Server nantinya, saya biasa menggunakan salah satu dari ketiga opsi dibawah:
1. FTP Client dengan Port 21 (Memerlukan FTP Server)
2. FTP Client dengan Port 22 (Memerlukan SSH Server)
3. Terminal dengan perintah scp (Memerlukan SSH Server)

Perlu diingat bahwa semua aksi yang dilakukan dengan tujuan memodifikasi sistem memerlukan akses Super User. Jadi pastikan teman-teman memiliki akses yang cukup dengan menyisipkan perintah sudo dalam setiap perintah yang bertujuan untuk memodifikasi atau mengubah sistem atau praktisnya dengan masuk ke akun root (Super User).

APACHE2 HTTPS VIRTUALHOST
1. Ubah Current Directory ke /etc/apache2/sites-available
root@pxvm:~# cd /etc/apache2/sites-available
Note: Secara default Apache2 membawa contoh file konfigurasi VirtualHost dengan protokol HTTPS, namanya adalah default-ssl.conf. Apache2 pun memberikan dokumentasi penjelasan disetiap parameter-parameter konfigurasi di file tersebut. Maka dari itu disini kita akan memanfaatkannya sebagai 'template' untuk situs dengan protokol HTTPS kita nantinya.

2. Salin file default-ssl.conf menjadi nama lain, contohnya menjadi smkn1pedan.ti.conf
root@pxvm:/etc/apache2/sites-available# cp default-ssl.conf smkn1pedan.ti.conf
3. Setelah kita Salin, kemudian kita buka file tersebut dengan bantuan editor nano.
root@pxvm:/etc/apache2/sites-available# nano smkn1pedan.ti.conf
Ini adalah isi asli dari file default-ssl.conf yang sudah kita salin menjadi smkn1pedan.ti.conf dengan dokumentasi dari setiap parameter saya hapus. Sehingga hanya konfigurasinya saja.
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
                ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
                SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
             
                <FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
                <Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
4. Mari kita mulai ubah konfigurasinya. Konfigurasi dengan Font Warna Merah diatas adalah yang akan kita ubah.

<IfModule mod_ssl.c>
          <VirtualHost *:443>
                ServerName www.smkn1pedan.ti
                ServerAdmin fajaru@smkn1pedan.ti
                DocumentRoot /var/www/html/smkn1pedan             
                ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
             
                SSLEngine on
SSLCertificateFile /etc/apache2/sslku/smkn1pedan.ti.cert.pem SSLCertificateKeyFile /etc/apache2/sslku/smkn1pedan.ti.key.pem           
                   <FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
                <Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>

Short Explanation:
1) <VirtualHost *:443> = adalah bahwa VirtualHost smkn1pedan.ti akan berjalan (Listening) disemua IP yang dimiliki oleh server.
2) ServerAdmin = Ini opsional, namun menurut saya cukup penting apabila server teman-teman dapat mengakses jaringan Internet
3) DocumentRoot = Lokasi 'public_html'-nya VirtualHost.
4) SSLEngine on = Parameter untuk me-load modul SSL
5) SSLCertificateFile = Lokasi file Certificate *.cert.pem
6) SSLCertificateKeyFile = Lokasi file Certificate Key *.key.pem

5. Setelah selesai mengkonfigurasi, simpan konfigurasi tersebut. Pada editor nano dapat dilakukan dengan cara menekan CTRL + X, tekan "y" lalu ENTER.

6. Kemudian aktifkan modul SSL Apache2 karena secara default modul ini belum di aktifkan.
root@pxvm:/etc/apache2/sites-available# a2enmod ssl 
7. Aktifkan Konfigurasi VirtualHost yang sudah kita buat dengan perintah
root@pxvm:/etc/apache2/sites-available# a2ensite smkn1pedan.ti
Ubah smkn1pedan.ti dengan nama file VirtualHost yang sudah teman-teman buat

8. Apabila Modul SSL dan VirtualHost yang dibuat sudah aktif, maka Apache2 akan meminta kalian memasukkan Passphrase dari Sertifikat yang kalian buat, ini normal dan aman.

9. Setelah itu cek apakah Apache2 berjalan dengan sempurna dengan mengetikkan perintah
root@pxvm:/etc/apache2/sites-available# service apache2 status
# Apabila tidak terdapat pesan error maka VirtualHost dengan HTTPS yang sudah teman-teman buat telah berjalan dan dapat diakses dengan protokol HTTPS di Web Browser
https://www.smkn1pedan.ti/

SSL Berhasil dipasang! :))
*Untuk Teaser artikel saya selanjutnya, lihat Address Bar nya. Tidak Silang Merah kan? hehe

Itulah konfigurasi dengan Apache2, Untuk pemasangan di Webserver NGINX akan saya poskan di artikel selanjutnya :)
Wassalamu'alaikum Wr. Wb.

No comments :

Post a Comment