1. UJIAN AKHIR SEMESTER (UAS) / FINAL PROJECT
VirtualHost + SSL
MODUL
oleh:
WINDI ROHMA HENY
1145305427
JURUSAN SISTEM INFORMASI
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SULTAN SYARIF KASIM RIAU
PEKANBARU
2017
2. Menjalankan CMD sebagai
Administrator
Cara 3 (Menjalankan CMD melalui Windows + R)
1. Klik tombol windows yang ada pada keyboard + R lalu ketikan CMD.
Setelah kita berhasil menjalankan CMD, maka kita lakukan pengujian dengan
menjalankan perintah SET US, perintah SET US disini gunanya hanya untuk menampilkan
Environment Variable yang dimulai dengan huruf US. CMD yang telah dijalankan sebagai
administrator akan memiliki judul Administrator: seperti terlihat pada gambar berikut:
3. BERKAS HOST
Host file digunakan oleh sistem operasi untuk meng-override settingan DNS yang
diberikan oleh DNS Server. Pada Microsoft Windows, host file terdapat pada.
%WINDIR%System32Driversetchosts
Misalnya
C:WindowsSystem32driversetchosts
Disini kita perlu hak akses sebagai administrator untuk dapat mengedit file hosts untuk
menambahkan alamat IP kita.
Sebagai contoh dalam modul ini penulis akan menambahkan alamat IP 127.0.0.0 dengan
DNS rahmad.riansyah.com pada file hosts.
Adapun langkah - langkah pengerjaanya adalah sebagai berikut.
1. Buka CMD, Lalu ketikan perintah notepad
WindowsSystem32driversetchosts lalu klik enter.
2.Setelah anda menekan enter maka secara otomatis CMD akan membuka file hosts. lalu yang
perlu kita lakukan adalah menambahkan 127.0.0.1 windi.com pada baris bagian bawah.
4. 3.Setelah selesai menambahkan 127.0.0.1 rahmad.riansyah.com pada baris bagian bawah maka
pilih file » save.
4.Setelah anda selesai menyimpan konfigurasi yang telah anda lakukan langkah selanjutnya
adalah kita melakukan pengujian apakah berkash hosts tersebut telah berhasil ditambahkan atau
belum, adapaun cara yang kita gunakan adalah dengan perintah ping rahmad.riansyah.com pada
CMD.
5. Setting VirtualHost dengan Apache (XAMPP)
Salah satu HTTP Daemon yang paling banyak digunakan adalah apache.
http://httpd.apache.org/ Apache mendukung VirtualHost, dokumentasi resmi dari Apache 2.4
untuk VirtualHost ada di sini:
http://httpd.apache.org/docs/2.4/vhosts/
http://httpd.apache.org/docs/2.4/mod/core.html#virtualhost dan
http://httpd.apache.org/docs/2.4/vhosts/name-based.html
Setelah berhasil membuat berkas hosts, maka yang selanjutnya akan kita lakukan adalah
mensetting virtualhost. adapun langkah - langkah dalam penyetingan VirtualHost pada apache
adalah sebagai berikut :
1. Tambahkan settingan pada berkas httpd.conf, biasanya berkas ini berada pada
C:xamppapacheconfhttpd.conf (jika Anda menginstal xampp di drive C)
6. 2.Lalu tambahkan baris berikut di akhir:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin kampar@gmail.com
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
ServerAlias localhost.localdomain
ErrorLog "logs/localhost.error.log"
CustomLog "logs/localhost.access.log" combined
</VirtualHost>
Include "conf/sites-enabled/*.conf"
7. Maksud perintah di atas adalah meng-enable Name Based Virtual Host di port 80 untuk
semua IP Address kita (*). ServerAdmin di sini adalah email admin yang nanti keluar kalau ada
error pada VirtualHost kita.
Perintah yang penting di sini adalah ServerName dan ServerAlias: localhost disini artinya
untuk VirtualHost ini jika orang mengakses localhost atau localhost.localdomain maka apache
akan memberikan DocumentRoot "C:/xampp/htdocs"
2. Selanjutnya buatlah sebuah folder sites-enabled pada direktori conf dengan perintah
mkdir C:xamppapacheconfsites-enabled
8. 3.Kemudian buat sebuah berkas di dalam folder sites-enabled tersebut
notepad C:xamppapacheconfsites-enabledwindi.rohma.conf
4.Kemudian akan muncul pesan peringatan dari notepad bahwa dia tidak bisa
menemukan windi.rohma dan akan membuat file baru dengan nama windi.rohma .
9. Setelah file rahmad.riansyah berhasil di buat maka tambahkan baris berikut.
<VirtualHost *:80>
ServerAdmin admin@windi.rohma
DocumentRoot "C:/xampp/vhosts/windi.rohma/public_html"
ServerName windi.rohma
ServerAlias www.windi.rohma
ErrorLog "C:/xampp/vhosts/windi.rohma/logs/error.log"
CustomLog "C:/xampp/vhosts/windi.rohma/logs/access.log" combined
</VirtualHost>
<Directory "C:/xampp/vhosts/rahmad.riansyah/public_html">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
10. 5. Kemudaian kita buat direktori vhosts untuk meletakan logs dan tempat penyimpanan
website yang akan kita buat (public_html)
1. mkdir C:xamppvhosts
2. mkdir C:xamppvhostswindi.rohma
3. mkdir C:xamppvhostswindi.rohmalogs
4. mkdir C:xamppvhostswindi.rohmapublic_html
6. Jangan lupa untuk menambahkan rahmad.riansyah ke berkas host Anda,
notepad C:WindowsSystem32driversetchosts
12. 7.Sekarang, restart Apache Anda dengan menekan tombol Stop, tunggu sebentar, lalu
start. Kalau belum dijalankan, cukup di start saja.
Sekarang, seharusnya Apache Anda sudah memiliki setidaknya dua buah Document Root:
● yang pertama di "C:/xampp/htdocs" untuk http://localhost;
13. ● yang kedua di "C:/xampp/vhosts/windi.rohma/public_html" jika ada yang mengakses
http://windi.rohma
Setelah proses restart selesai, seharusnya kita sudah bisa menjalankan http://windi.rohma namun
tampilanya masih akan seperti ini.
14. Mengganti Sertifikat SSL XAMPP
SSL memastikan data transaksi yang terjadi secara online di enkripsi/acak sehingga tidak
dapat dibaca oleh pihak lain. Kegunaan utamanya adalah untuk menjaga keamanan dan
kerahasiaan data ketika melakukan transaksi.
Alasan utama mengapa menggunakan SSL adalah untuk menjaga informasi sensitif
selama dalam proses pengiriman melalui Internet dengan cara dienkripsi, sehingga hanya
penerima pesan yang dapat memahami dari hasil enkripsi tersebut. Hal ini sangat penting, karena
informasi yang kita kirimkan di Internet membutuhkan proses perjalanan dari komputer ke
komputer sampai mencapai server tujuan. Komputer lain yang ada diantara Anda dan server
dapat melihat nomor Kartu Kredit Anda, username dan passwords, dan informasi sensitive
lainnya bila hal ini tidak dienkripsi dengan Sertifikat SSL. Ketika sertifikat SSL digunakan,
informasi menjadi tidak dapat terbaca oleh siapapun kecuali ke server yang memang dituju saat
mengirim informasi tersebut. Hal ini melindungi informasi tersebut dari hackers dan pencuri
identitas.
Otentikasi (Authentication)
Selain juga enkripsi, sertifikat SSL juga menyediakan otentikasi. Ini artinya Anda dapat lebih
pasti dalam mengirimkan informasi ke server yang benar-benar valid dan bukan malah ke
kriminal server . Mengapa ini begitu sangat penting ? Sifat dasar dari internet artinya bahwa
pelanggan Anda akan lebih sering dalam mengirimkan informasi yang melewati beberapa jumlah
komputer. Setiap dari komputer ini bisa berpura-pura menjadi website Anda dan mengelabui
pengguna Anda untuk mengirimkan informasi mereka ke komputer tersebut. Hal ini hanya dapat
dihindari dengan menggunakan Public Key Infrastructure (PKI), dan mendapatkan sertifikat SSL
dari penyedia SSL terpercaya.
Dalam modul kali ini penulis berperan sebagai CA (Certificate Authority) yang akan
menandatangani sertifikat sendiri serta merubah sertifikat SSL yang dimiliki oleh XAMPP.
langkah - langkah yang akan kita lakukan akan terbagi menjadi beberapa tahapan :
1. Perisapan
2. Membuat Sertifikat CA
3. Membuat Sertifikatt Untuk Localhost
15. 4. Menandatangani Sertifikat Request
5. Meletakan CRT dan Key Ke Apache
6. Menginstall sertifikat CA
Persiapan
1. Buka CMD, lalu ketikan perintah cd (enter)
2.Lalu buat folder baru dengan nama sslcert, untuk membuat direktori menggunakan CMD
ketikan Perintah mkdir. mkdir sslcert (enter)
3. Kemudian masuk kedalam folder sslcert dengan perintah cd sslcert (enter)
16. 4.Setelah berada pada folder sslcert, langkah selanjutnya adalah membuat 2 folder baru, yaitu
folder certs dan private. ketikan perintah mkdir certs private (enter)
Folder certs nantinya untuk menampung semua sertifikat yang dihasilkan dan folder
private untuk menyimpan semua private-key kita.
5.Sekarang buat sebuah berkas bernama serial, dan isi dengan 100001. Berkas serial ini nantinya
digunakan untuk otomatis memberi nomor serial untuk setiap sertifikat yang dihasilkan.
ketikan perintah : echo 100001 >serial (enter)
selanjutnya ketikan : copy con serial (enter)
100001 maka akan muncul pesan <Yes/No/All> :ketik All (enter)
lalu tekan ctrl + z (enter)
17. 6.Kemudian Buat sebuah berkas baru, namanya certindex.txt untuk menampung daftar sertifikat
yang telah kita tandatangani.
ketikan perintah notepad certindex.txt (enter)
Apabila muncul pesan peringatan seperti pada gambar dibawah ini maka klik Yes, peringatan
tersebut muncul karna file certindex belum ada, dan notepad akan membuat file tersebut.
18. 7.Sekarang buat konfigurasi OpenSSL kita, dengan perintah notepad openssl.cnf (enter)
Apabila muncul pesan peringatan seperti pada gambar sebelumnya maka klik saja Yes.
lalu copy-paste baris baris berikut :
#
# OpenSSL configuration file.
#
# Establish working directory.
dir = .
[ ca ]
default_ca = CA_default
[ CA_default ]
19. serial = $dir/serial
database = $dir/certindex.txt
new_certs_dir = $dir/certs
certificate = $dir/cacert.pem
private_key = $dir/private/cakey.pem
default_days = 3650
#default_md = md5
default_md = sha1
preserve = no
email_in_dn = no
nameopt = default_ca
certopt = default_ca
policy = policy_match
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ req ]
default_bits = 2048 # Size of keys
default_keyfile = key.pem # name of
generated keys
#default_md = md5 # message digest
algorithm
default_md = sha1 # message digest
algorithm
string_mask = nombstr # permitted characters
distinguished_name = req_distinguished_name
req_extensions = v3_req
[ req_distinguished_name ]
# Variable name Prompt string
#------------------------- ----------------------------------
0.organizationName = Organization Name (company)
organizationalUnitName = Organizational Unit Name (department,
division)
emailAddress = Email Address
emailAddress_max = 40
localityName = Locality Name (city, district)
stateOrProvinceName = State or Province Name (full
name)
countryName = Country Name (2 letter code)
countryName_min = 2
countryName_max = 2
20. commonName = Common Name (hostname.com, IP, or your
name)
commonName_max = 64
# Default values for the above, for consistency and less typing.
# Variable name Value
#------------------------ ------------------------------
0.organizationName_default = Universitas Islam Negeri Sultan Syarif
Kasim
localityName_default = Pekanbaru
stateOrProvinceName_default = Riau
countryName_default = ID
[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
[ v3_req ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
21. Membuat Sertifikat CA
Sebagai kepala unit IT di organisasi Anda, Anda harus bisa menandatangani sertifikat
seluruh server. Untuk itu, Anda harus memiliki dahulu sebuah sertifikat (KEY, privateKEY)
yang digunakan untuk menandangani seluruh sertifikat request (CSR) dari seluruh unit yang lain.
Sekarang, kita buat sertifikat PKI untuk CA kita, yang nantinya akan digunakan oleh
perusahaan / sekolah / universitas Anda untuk menandatangani seluruh sertifikat di kantor / lab /
kampus.
adapun langkah - langkah untuk membuat sertifikat PKI untuk CA adalah sebagai berikut :
1. ketikan perintah berikut :
C:xamppapachebinopenssl.exe req -new -x509 -extensions v3_ca -
keyout privateCAkey.pem -out CAcert.pem -days 3650 -config
./openssl.cnf (enter)
2.kemudian masukan password yang akan kita gunakan untuk sertifikat CA kita :
22. Setelah berhasil memasukan password, maka kita akan diminta untuk memasukan
informasi yang di butuhkan pada sertifikat.
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Organization Name (company) [Universitas Islam Negeri Sultan Syarif Kasim]:
Organizational Unit Name (department, division) []:SIF2014
Email Address []:windirohmaheny@gmail.com
Locality Name (city, district) [Pekanbaru]:
State or Province Name (full name) [Riau]:
Country Name (2 letter code) [ID]:
Common Name (hostname.com, IP, or your name) []:windi.com
Dengan perintah di atas, kita sekarang sudah memiliki sebuah kunci private untuk
menandatangani sertifikat. Kunci private tersebut disimpan di folder private, dengan
nama CAkey.pem.
Adapun berkas CAcert.pem adalah sertifikat public kita yang nanti akan digunakan oleh
client untuk menginstal sertifikat kita.
Membuat sertifikat untuk Localhost
23. Selanjutnya, kita akan membuat sertifikat untuk localhost, untuk menggantikan sertifikat
yang dibuat oleh XAMPP, dan sertifikat ini akan kita tandatangani sendiri dengan CAkey
(private key) kita.
Perintah dibawah ini digunakan untuk membuat sebuah sertifikat REQuest, privateKEY.
Semuanya dalam format *.pem. Nantinya, localhost-req.pem ini akan dikirimkan ke CA agar
nanti ditandatangani (dan kalau ROOT CA, Anda harus bayar), nantinya CA akan menghasilkan
.CRT, yang CRT ini berikut dengan localhost-key.pem (private key) akan diinstall ke Apache.
1. ketikan perintah berikut ini C:xamppapachebinopenssl req -new -nodes -out
localhost-req.pem -keyout private/localhost-key.pem -config
./openssl.cnf (enter)
Kemudian masukan informasi yang dibutuhkan oleh sertifikat.
24. Organization Name (company) [Universitas Islam Negeri Sultan Syarif Kasim]:
Organizational Unit Name (department, division) []:IT Department
Email Address []:windirohmaheny@gmail.com
Locality Name (city, district) [Pekanbaru]:
State or Province Name (full name) [Riau]:
Country Name (2 letter code) [ID]:
Common Name (hostname.com, IP, or your name) []:localhost
Menandatangani Sertifikat Request
Sebagai CA, Anda harus menandatangani seluruh request (yang valid) dari organisasi
Anda. Kali ini, kita menandatangani sertifikat request dari server localhost, dimana si localhost
ini telah memberikan berkas localhost-req.pem kepada kita.
Sekarang, jika ingin membuat snake-oil certificate, kita sendiri yang menjadi CA dan
menandatangani sertifikat request tadi.
Biasanya perintah ssl tidak mau jalan apabila kita belum mengsetting path nya.
Adapaun perintah untuk mengsetting path agar memasukkan direktori C:xamppapachebin
adalah :
set path=C:xamppapachebin;%PATH% (enter)
25. Setelah selesai menyeting path untul ssl maka selanjutnya yang akan kita lakukan adalah
menandatangani sertifikat request dari localhost-req.pem tadi, gunakan perintah:
openssl ca -out localhost.crt.pem -config ./openssl.cnf -infiles localhost-
req.pem (enter)
Using configuration from ./openssl.cnf
Loading 'screen' into random state - done
Enter pass phrase for ./private/cakey.pem:[masukkan password privatekeyCA Anda]
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
organizationName :PRINTABLE:'Universitas Islam Negeri Sultan Syarif Kasim'
organizationalUnitName :PRINTABLE:'IT Department'
localityName :PRINTABLE:'Pekanbaru'
26. stateOrProvinceName :PRINTABLE:'Riau'
countryName :PRINTABLE:'ID'
commonName :PRINTABLE:'localhost'
Certificate is to be certified until Jan 1 08:56:03 2027 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Setelah melewati tahap ini, Anda akan memiliki sebuah CRT, localhost.crt.pem yang
dapat Anda letakkan ke server localhost Anda. Jangan lupa bahwa Apache juga membutuhkan
private KEY untuk localhost ini.
Meletakkan CRT dan KEY ke Apache
Setelah Anda sukses membuat CRT dan KEY, sekarang Anda harus meletakkanya ke
XAMPP. Jika XAMPP di install di drive C:, maka coba navigasi ke folder
C:xamppapacheconf
28. Setelah itu, jangan lupa diganti konfigurasi Apache agar menggunakan sertifikat baru yang Anda
buat. Konfigurasi yang harus diganti biasanya terletak di folder extra, cari berkas httpd-ssl.conf
Kemudian ganti dengan sertifikat yang baru :
29. Restart XAMPP, sekarang Anda telah menggunakan sertifikat yang baru.
Menginstall Sertifikat CA.
Setelah berhasil Anda buat, sertifikat public key CA yang Anda buat tadi (CAcert.pem)
harus Anda install dahulu ke SELURUH komputer yang nantinya akan menggunakan sertifikat
yang kita tanda tangani. Menginstallnya cukup sekali saja. Internet Explorer dan Google Chrome
30. menggunakan mekanisme yang sama, sedangkan Mozilla Firefox menggunakan database root
CA sendiri, jadi harus di install juga (lagi) di Firefox.
Adapun langkah - langkah untuk menginstall sertifikat CA adalah sebagai berikut :
1. Buka Web Browser anda. (disini penulis menggunakan Mozila Firefox), kemudian pilih
Tools » Option » Advance » Encryption » View Certificates
2. lalu installkan sertifikat yang telah kita buat kedalam web browser dengan cara
mengimportkan sertifikat yang telah kita buat.
31. 3. Disini penulis akan mengimportkan sertifikat dari windi.rohma.com
4. untuk melihat detail dari sertifikat yang telah kita install maka kita tinggal
menekan view.
32. Sekalipun telah di install, koneksi https kita tetap akan tersilang di Google Chrome, tetapi
tidak apa-apa, dan sedikit lebih baik daripada yang keluar adalah pesan Error koneksi tidak
privat, walaupun kita tahu koneksi itu privat.