A. TUJUAN PEMBELAJARAN
1. Mengenalkan tentang konsep SSL
2. Membuat self-signed server
certificate
3. Melakukan instalasi
dan
konfigurasi Apache2 + SSL/TLS
4. Melakukan testing instalasi
B. DASAR TEORI
1.1 SSL/TLS
Transport Layer Security (TLS) adalah protocol untuk mengamankan komunikasi antar aplikasi lewat internet.
TLS mengamankan konten pada layer aplikasi, seperti halaman
web dan diimplementasikan pada layer transport, yaitu TCP. Untuk menjamin
keamanan. data yang dikirim dienkripsi dan diotentikasi pada sisi server dan client.
Secure Socket Layer (SSL) adalah protocol yang
diciptakan sebelum TLS yang
mengaplikasikan
hal ini.
SSL/TLS biasanya dioperasikan secara
bersama-sama dengan HTTP, sehingga
membentuk protocol baru yang disebut HTTPS, untuk mengamankan transaksi lewat web. Selain
intu,
protocol ini dapat digunakan untuk
aplikasi-aplikasi lain seperti email,
file
transfer dan virtual private networks (VPN).
2 HTTPS
HTTPS menggabungkan
protocol
HTTP dan
SSL/TLS
untuk menjamin keamanan
komunikasi antara eb server dan web browser. HTTPS beroperasi pada port 443
dan bukan pada port 80 seperti normalnya HTTP. HTTPS bekerja dengan menyediakan enkripsi
untuk konten
web
dan
otentikasi
web
server. HTTPS tidak melakukan
otentikasi client sehingga web sita
tidak dapat melakukan otentikasi
user selama
koneksi. User
harus melakukan sejumlah otentikasi
tambahan seperti password,biometric atau
metode otentikasi lain.
Komunikasi SSL/TLS meliputi dua tahap yaitu handshaking
dan
data sending.
Sebelum berkomunikasi, web site harus meminta certificate authority (CA) agar dapat
menanda tangani (signing) digital certificate-nya yang berisi public key
dari
site. User
yang menerima digital sertificate CA, segera memanggil sertifikat root,
yang dimiliki
ketika mereka menginstall web browser. Web browser seperti Internet Explorer
atau Firefox sebelumnya telah dilengkapi dengan sejumlah sertifikat root dari bermacam -
macam perusahaan
seperti VeriSign atau
Entrust, yang memang menspesialiasisikan
diri
sebagai perusahaan yang bergerak
di bidang sertifikasi.
CA: Verisign
2 1
3
5 Client web browser
Amazon server
4
1. Verisign menandatangani sertifikat Amazon dengan publik key-nya
2. Install
CA
sertikat dengan public key-nya pada browser client
3. Koneksi lewat https
4. Saling menukar sertifikat digital,
termasuk publik key
5. Client melakukan verifikasi sertifikat Amazon menggunakan public key dari CA
Gambar 12.1 SSL/TLS handshaking pada https
Pada gambar diatas,
begitu user hendak mengkoneksikan diri dengan website
lewat koneksi https, web server mengirim certifikatnya yang mengandung public key
dari
web site tersebut. User akan
memverifikasi sertifikat ini dengan memakai pre- installed
sertifikat root dari website CA.
PAda tahap kedua dari komunikasi SSL/TLS adalah tahapan enkripsi antara server
dan
client berdasarkan
protocol kriptografi yang dinegosiasikan antara kedua belah pihak. Pada gambar berikut, begitu sertifikat digital server berhasil diverifikasi, maka
browser dan server mulai saling bernegosiasi cipher yang hendak dipakai untuk pengkodean data dan verifikasi digital signature. Jika public key
enkripsi sudah dipilih, kedua belah pihak mengenkripsikan data dengan public key masing-masing dan
mendekripsi
dengan private
keynya. Untuk
menghemat waktu,
enkripsi
public
key hanya digunakan saat saling menukar session key (private key yang temporer) yang
dipakai untuk data enkripsi.
1

4 Client
2 Amazon server
3
1. Menegosiasikan cipher (metode
kriptografi yang dipakai, termasuk didalamnya panjang key, hash function, otentikasi ,dll)
2. Mengirim data yang telah terinkripsi dengan Amazon publik
key
3. Mengirim data yang telah terinkripsi dengan client publik
key
4. Dekripsi/decoding data
dari Amazon dengan publik
key
client
Gambar 12.2 Data sending dengan SSL/TLS
Gambar 12.3 Indikator penggunaan SSL/TLS
Software yang dibutuhkan untuk
menginstall web
server yang secure dan
berbasis open- source adalah :
1. Apache 2.2.11: Apache2 ini adalah web server yang akan kita gunakan. Anda
dapat mengecek informasinya lewat
http://httpd.apache.org/.
2. OpenSSL
0.9.8k: OpenSSL adalah toolkit
yang digunakan untuk
mengimplementasikan protocol Secure Socket Layer (SSL v2/v3) dan
Transport Layer Security (TLS v1). OpenSSL juga menyediakan general purpose library untuk kriptografi. Anda dapat mengecek informasinya lewat
http://www.openssl.org/.
3. Mod_SSL 2.2.11: Mod_SSL adalah add-on modul untuk Apache. Pada versi lama apache, user harus mengkompile paket ini, sedangkan pada versi baru, Mod_SSL sudah
built-in pada server sebagai interface antara OpenSSL dan Apache2. Anda dapat mengecek
informasinya lewat http://www.mod_ssl.org.
C. TUGAS PENDAHULUAN
1. Jelaskan
proses handshaking pada SSL/TLS
2. Jelaskan
proses pengiriman
data pada SSL/TLS
3. Sebutkan
software-software yang dibutuhkan
untuk menggunakan
protocol https.
4. Bagaimana penggunaan
TLS/SSL pada mail dan
vpn ?
5. Apa yang disebut CA ? Sebutkan
5 buah CA yang anda tahu
6. Lihatlah
sertifikat dari webmail dengan mengklik
tanda kunci. Lihat pada kolom
issued by dan
issued to.
Tulis CN,O,OU. PAda technical Details,
lihat metode enkripsi. Apa metode
enkripsinya.
D. PERCOBAAN
1. Manajemen sertifikat dengan web browser
Pada bagian
ini anda akan belajar bagaimana browser menyimpan informasi certificate authority (CA) dan
informasi-informasi berkaitan dengan
cipher-nya.
1. Buka briwser
firefox.
Pada toolbar,
masuklah ke tab
Preferences ->
Advanced --
-> Encryption
2. Melihat protokol yang digunakan
untuk enkripsi.
Protokol apa yang digunakan ?
Gambar 12.4 Protokol enkripsi
3. Klik Certificates -> Authorities. Anda akan melihat Certificate Authorities (CA) yang diinstall di browser anda, Ini adalah kumpulan listing perusahaan (CA) yang
menawarkan jasa untuk penandatanganan (signing) dan verifikasi sertifikat
(mereka adalah
pihak ketiga yang dipercaya).
Sebutkan
dua saja !
Gambar 12.5 Listing Certificate Authorities
(CA) di Firefox dan sertifikatnya
4. Selain melisting nama-nama CA, juga dicantumkan sertifikat dari masing-masing
perusahaan.
Anda dapat melihatnya dengan
mengetik Built in
object token. Sertifikat ini disebut sebagai root certificate. Pilih salah satu sertifikat ini
dengan menklik
View -> General. General memberikan informasi tentang perusahan CA tersebut
seperti Common Name, Organization, Organization Unit, validitas, kode fingerprintnya dan lain-lain.
Klik Detail untuk melihat informasi seputar enkripsinya. Klik certificate fileds. Cari Certificate Signature Algorithm. Fiels ini
menunjukan algoritma apa
yang dipakai
CA
untuk menandatangani
sertifikat.
Hasilnya akan
Nampak di fields value. Apa protocol enkripsi yang dipakai?
Gambar 12.6
Detail enkripsi yang dipakai oleh CA
Gambar 12.7 Field certicate untuk mengecek algoritma yang dipakai CA
5. Lihat pada field Subject’s Public Key. Ini adalah pulic key dari CA. Berapa
panjangnya dalam bit?
6. Klik Close untuk meninggalkan
certificate viewer , klik
OK
dan kembalilah
pada jendela Preference.
2. Menciptakan sertifikat SSL dengan OpenSSL
Pada
bagian ini anda akan belajar bagaimana menginstall web server yan g secure dengan menggunakan SSL/TLS
untuk transaksinya. Mengenai software yang
dibutuhkan, anda bisa membaca pada dasar
teori.
Sebagai langkah awal installah
software-software tersebut. Untuk
mod_ssl, secara otomatis telah ter-built-in pada
Apache2.
Tahap paling penting
dari praktikum ini adalah membuat public/private key, SSL sertifikat, certificate signing request (CSR).
Biasanya, server yang komersial, akan meminta otoritas
pihak ke tiga seperti VeriSign untuk menandatangani sertifikatnya. Pada praktikum ini,
kita tidak akan meminta bantuan
pihak
ketiga, namun menjadi CA sendiri (self signing CA).
Kita
juga akan membuat
domain sendiri yang
dihost secara local. Karena itu anda bisa memilih nama domain yang anda inginkan. Kerjakan langkah-langkah dibawah dan
jawab pertanyaan- pertanyaannnya.
1. Menginstall software-software yang dibutuhkan :
$ sudo
apt-get install apache2
$ sudo
apt-get install openssl
2. Langkah berikutnya adalah membuat sertifikat SSL untuk web server sebelum kita
menjalankan secure server dengan HTTPS.
Selain itu , kita juga akan membuat pasangan public/private key
untuk melakukan request sertifikat. Anda akan
membutuhkan domain name untuk sertifikat yang anda ciptakan. Pada contoh ini
digunakan
nama
: www.webku.com
3. Masuk
ke direktori : /etc/apache2/ssl. Direktori ssl adalah
direktori dimana anda menyimpan semua private keys, certificate signing request dan
sertifikat. Lihat isi
direktori ini
$
cd /etc/apache2/ssl.
$ ls
-al
4. Untuk membuat Certificate Signing Request (CSR), anda harus membuat sepasang public/privat key
terlebih dahulu. Untuk itu, pertama-tama, kosongkan semua
sertifikat yang ada dengan perintah
:
$ sudo
rm *
5. Kemudian buatlah key dengan nama server.key yang merupakan private key dengan perintah
:
$ sudo
openssl genrsa -des3 -out server.key 1024
genrsa : menunjukkan
OpenSSL bahwa anda ingin menciptakan
sepasang key
des3 : menunjukkan bahwa private
key harus
dienkripsi dan
dilindungi
oleh passphrase
out : menunjukkan
filename yang akan
menyimpan hasil output
1024 : menunjukkan
jumlah bit dari key yang dibuat
6. Siapkan
passphrase dan
isikan pada saat diminta. Apa
passphrase anda ? tulis sebagai bagian laporan. Hasilnya akan
muncul seperti ini :
Generating RSA private key, 1024 bit
long modulus
........++++++
...++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass
phrase for server.key:
You will be prompted for a pass phrase,
once you type in your initial pass phrase, you will be asked to verify this
pass phrase.
Gambar 12.8 Pembangkitan private key
Setelah menjalankan langkah ini. akan tercipta server.key pada direktori ssl. Cek
dengan
perintah ls –al. Capture screenshot dari isi file server.key sebagai laporan.
7. Pastikan anda maih berada pada direktori /etc/apache2/ssl. Cobalah generate file server.csr dengan menggunakan private key diatas. Gunakan perintah dibawah. Csr ini kependekan
dari certificate signing request.
$ sudo
openssl req -new -key server.key -out server.csr
Akan muncul tampilan berikut. Isi
sesuai
dengan keinginan anda. Yang penting ketika memasukkan Common Name (CN) adalah CN harus sesuai dengan alamat web, nama DNS atau
IP
address pada konfigurasi Apache.
Setelah anda memasukkan informasi
tersebut, akan terbentuk file server.csr yang akan digunakan untuk meminta sertifikat. Coba cek dengan perintah ls untuk meihat apakah file ini sudah
terbentuk. Capture screenshot dari server.csr sebagai laporan.
Country Name:INA
State or
Province Name:
jatim
Locality Name:
SBY Organization Name: EEPIS Organizational Unit Name: IT
A challenge password:
1234567
An Optional Company Name: G10
Gambar 12.9
Field Informasi CA
8. Perhatikan bahwa untuk membuat file server.crt anda membutuhkan server.key dan
server.csr. Biasanya, pada langkah ini, web server komersial akan
meminta CA
professional seperti VeriSign untuk
memberikan file crt.
Pada praktikum ini kita
akan berlaku sebagai CA dan mengenerate file crt tersebut secara mandiri (self signing certificate).
9. Sekarang coba generate file server.crt dengan
perintah dibawah :
$
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out
server.crt
Perintah diatas akan meminta anda memasukkan kembali passphrase untuk
mengenerate server.key (yaitu 123456). Masukkan passphrase yang sesuai. Capture
screenshot dari server.crt sebagai laporan
10. Cek lagi directory ssl dan anda seharusnya memiliki 3
file, server.key,server.crt dan server.crs. Jika benar, selamat, anda telah menyelesaikan lab ini dengan
baik
J
1. Cek direktori ssl untuk memastikan ada 3 file disini yaitu : server.key,server.crt dan server.crs. Hal ini penting untuk kelancaran
percobaan ke 3 ini.
2. Enable-kan
modul mod_ssl dengan perintah
:
$ sudo a2enmod ssl
3. Restart apache. Tujuannya agar module ssl berjalan pada apache. Proses ini harusnya berjalan tanpa error.
$ sudo /etc/init.d/apache2 restart
$ cd
/etc/apache2/sites-available/
Ubah port VirtualHost dari 80 ke 443. Baris pertama dari file namapk seperti
dibawah.
<VirtualHost *:443>
Tambahkan
server
name
dibawah
baris ServerAdmin
Ubah DocumentRoot untuk
menunjuk ke web
direktori dari website webku.
DocumentRoot /var/www/webku
Ubah <Directory /var/www/> untuk
menunjuk ke direktori webku
<Directory /var/www/webku>
Masukkan
baris ini sebelum baris ErrorLog /var/log/apache2/error.log. Tujuannya agar virtual
host tahu dimana key dan sertifikat SSL
disimpan.
SSLEngine On
SSLCertificateFile
/etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
7. Pada directory /var/www/,
copy file index.html ke /var/www/webku/
$ sudo cp /var/www/index.html
/var/www/webku/index.html
9. Edit file /etc/hosts untuk melakukan resolusi
domain www.webku.com website ke
127.0.0.1. Cari baris 127.0.0.1
lalu
tambahkan
baris ini :
4.
Menjalankan https
1.
Restart apache2
agar efek dari sertifikat SSL mulai efektif.
$
sudo /etc/init.d/apache2 restart
Masukkan
passphrase yaitu 123456. Jika cocok
maka
apache2 akan
di-restart dan memberikan
tanda [OK]
2. Buka http://localhost pada browser. Jika apache2
berjalan dengan
baik, maka akan muncul pesan “It Works!”
Gambar 12.10 Tampilan
browser waktu
pertama kali mengakses https
Pesan ini muncul dari browser kita karena sertikat yang
dibangkitkan oleh
www.webku.com bersifat self signed.
Kita akan menerima sertikat tersebut dan menambahkan eksepsi .
4. Klik tombol : I Understand the Risks, kemudian klik tombol: Add Exception dan
terakhir klik Get Certificate . Klik View. Anda akan melihat sertifikat self-signed yang
tadi
anda buat. Setelah itu klik checkbox Permanently store this exception dan
klik
tombol Confirm Security Exception.
5. Akhirnya muncul halaman web yang kita buat. Perhatikan bahwa awal dari URL
adalah
https, bukan
http
! Capture screenshoot sebagai laporan
Gambar 12.11 Halaman https
6. Perhatikan pula bahwa
pada
pojok kiri bawah tampak tanda
yang menunjukkan
bahwa web server tersebut tersertifikasi. Apakah tanda ini muncul di website
7. Double klik tanda kunci
tersebut. Klik tombol view certificate pada tanda kunci
tersebut.
Sampai kapan periode
validasi certifikat ini berakhir.
8. Klik pada tab Detail. Siapa yang mengeluarkan sertifikat tersebut?
9. Bagaimana certifikat ini digunakan untuk komunikasi web browser dan web server?
Catatan :
1. Jika
$ /etc/init.d/apache2 restart tidak berhasil, dan memberikan pesan :
* Restarting web server apache2
(13)Permission
denied: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
Artinya anda harus melakukan
/etc/init.d/apache2
restart ketika anda berlaku sebagai root.
Untuk
itu jangan lupa lakukan sudo,
seperti : $
sudo /etc/init.d/apache2
2. Jika pesan
yang diberikan
:
* Restarting web server apache2
(98)Address already in use: make_sock:
could not bind to address
0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed. 12
Artinya Apache2 sudah berjalan sebagai proses. Untuk itu coba
cek
no PID dan kill PID
tersebut.
$ sudo fuser -v 80/tcp
USER PID ACCESS COMMAND
80/tcp: root 1180 F.... apache2
$ sudo kill -9 1180