MEMBUAT WEB SERVER, VIRTUAL HOSTING dan HTTPS PADA UBUNTU 9.10
HTML berupa kode-kode tag yang menginstruksikan penjelajah web untuk menghasilkan tampilan sesuai dengan yang diinginkan. Sebuah file yang merupakan file HTML dapat dibuka dengan menggunakan penjelajah web seperti Mozilla Firefox atau Microsoft Internet Explorer. HTML juga dapat dikenali oleh aplikasi pembuka surel ataupun dari PDA dan perangkat lunak lain yang memiliki kemampuan browser. Dengan menggunakan perintah-perintah HTML memungkinkan pengguna untuk melakukan tugas-tugas berikut:
1. Menentukan ukuran dan alur tulisan.
2. Mengintegerasikan gambar dengan tulisan.
3. Membuat Pranala.
4. Mengintegerasikan berkas suara dan rekaman gambar hidup.
5. Membuat form interaktif.
HTML dokumen tersebut mirip dengan dokumen tulisan biasa, hanya dalam dokumen ini sebuah tulisan bisa memuat instruksi yang ditandai dengan kode atau lebih dikenal dengan TAG tertentu. Sebagai contoh jika ingin membuat tulisan ditampilkan menjadi tebal seperti: TAMPIL TEBAL, maka penulisannya dilakukan dengan cara: TAMPIL TEBAL. Tanda digunakan untuk mengaktifkan instruksi cetak tebal, diikuti oleh tulisan yang ingin ditebalkan, dan diakhiri dengan tanda untuk menonaktifkan cetak tebal tersebut. HTML lebih menekankan pada penggambaran komponen-komponen struktur dan formating di dalam halaman web daripada menentukan penampilannya.Sedangkan penjelajah web digunakan untuk menginterpretasikan susunan halaman ke gaya built-in penjelajah web dengan menggunakan jenis tulisan, tab, warna, garis, dan perataan text yang dikehendaki ke komputer yang menampilkan halaman web. Salah satu hal Penting tentang eksistensi HTML adalah tersedianya Lingua franca (bahasa Komunikasi) antar komputer dengan kemampuan berbeda. Pengguna Macintosh tidak dapat melihat tampilan yang sama sebagaimana tampilan yang terlihat dalam pc berbasis Windows. Pengguna Microsoft Windows pun tidak akan dapat melihat tampilan yang sama sebagaimana tampilan yang terlihat pada pengguna yang menggunakan Produk-produk Sun Microsystems. namun demikian pengguna-pengguna tersebut dapat melihat semua halaman web yang telah diformat dan berisi Grafika dan Pranala.
HTML memungkinkan kita untuk menyunting tampilan atau format berkas yang akan kita kirimkan melalui media daring. Beberapa hal yang dapat dilakukan dalam menentukan format berkas adalah :
1. Kita dapat menampilkan suatu kelompok kata dalam beberapa ukuran yang dapat digunakan untuk judul, heading dan sebagainya.
2. Kita dapat menampilkan tulisan dalam bentuk cetakan tebal
3. Kita dapat menampilkan sekelompok kata dalam bentuk miring
4. Kita dapat menampilkan naskah dalam bentuk huruf yang mirip dengan hasil ketikan mesin ketik
5. Kita dapat mengubah-ubah ukuran tulisan untuk suatu karakter tertentu.
Secara garis besar, terdapat 4 jenis elemen dari HTML:
6. structural. tanda yang menentukan level atau tingkatan dari sebuah tulisan (contoh, (h1)Golf(/h2) akan memerintahkan browser untuk menampilkan "Golf" sebagai tulisan tebal besar yang menunjukkan sebagai Heading 1
7. presentational. tanda yang menentukan tampilan dari sebuah tulisan tidak peduli dengan level dari tulisan tersebut (contoh, boldface akan menampilkan bold. Tanda presentational saat ini sudah mulai digantikan oleh CSS dan tidak direkomendasikan untuk mengatur tampilan tulisan,
8. hypertext. tanda yang menunjukkan pranala ke bagian dari dokumen tersebut atau pranala ke dokumen lain (contoh, Wikipedia akan menampilkan Wikipedia sebagai sebuah hyperlink ke URL tertentu),
Ada tiga macam link yang dapat kita gunakan :
1. Link menuju bagian lain dari page
2. Link menuju page lain dalam satu web site
3. Link menuju resource atau web site yang berbeda.
Selain markup presentational , markup yang lain tidak menentukan bagaimana tampilan dari sebuah tulisan. Namun untuk saat ini, penggunaan tag HTML untuk menentukan tampilan telah dianjurkan untuk mulai ditinggalkan, dan sebagai gantinya digunakan Cascading Style Sheets.
HTML tidak membedakan penggunaan huruf besar ataupun huruf kecil dari suatu elemen. Suatu elemen HTML terdiri dari tag-tag beserta teks yang ada dalam tag-tag tersebut. Tag ini dinyatakan dengan tanda lebih kecil (<) dan tanda lebih besar (>). Tag biasanya merupakan suatu pasangan yang disebut dengan : 1. Tag awal, dinyatakan dalam bentuk 2. Tag akhir, dinyatakan dalam bentuk
Format : teks yang ditampilkan Contoh : untuk menampilkan teks dalam format teks miring Teks ini terlihat miring di browser anda.
Bagian BODY, yang dinyatakan dengan tag …, merupakan tubuh atau isi dari dokumen HTML dimana anda meletakan informasi yang akan ditampilkan pada browser.
Web Server
Web server adalah software yang menjadi tulang belakang dari world wide web (www). Web server menunggu permintaan dari client yang menggunakan browser seperti Netscape Navigator, Internet Explorer, Modzilla, dan program browser lainnya. Jika ada permintaan dari browser, maka web server akan memproses permintaan itu kemudian memberikan hasil prosesnya berupa data yang diinginkan kembali ke browser. Data ini mempunyai format yang standar, disebut dengan format SGML (standar general markup language). Data yang berupa format ini kemudian akan ditampilkan oleh browser sesuai dengan kemampuan browser tersebut. Contohnya, bila data yang dikirim berupa gambar, browser yang hanya mampu menampilkan teks (misalnya lynx) tidak akan mampu menampilkan gambar tersebut, dan jika ada akan menampilkan alternatifnya saja. Web server, untuk berkomunikasi dengan client-nya (web browser) mempunyai protokol sendiri, yaitu HTTP (hypertext transfer protocol).
Dengan protokol ini, komunikasi antar web server dengan client-nya dapat saling dimengerti dan lebih mudah. Seperti telah dijelaskan diatas, format data pada world wide web adalah SGML. Tapi para pengguna internet saat ini lebih banyak menggunakan format HTML (hypertext markup language) karena penggunaannya lebih sederhana dan mudah dipelajari. Kata HyperText mempunyai arti bahwa seorang pengguna internet dengan web browsernya dapat membuka dan membaca dokumen-dokumen yang ada dalam komputernya atau bahkan jauh tempatnya sekalipun.
Web Server juga disebut Suatu program (dan juga mesin yang menjalankan program) yang mengerti protokol HTTP dan dapat menanggapi permintaan-permintaan dari web browser yang menggunakan protokol tersebut. sedangkan WEB itu sendiri adalah Suatu sistem di internet yang memungkinkan siapapun agar bisa menyediakan informasi:information
Hal ini memberikan cita rasa dari suatu proses yang tridimensional, artinya pengguna internet dapat membaca dari satu dokumen ke dokumen yang lain hanya dengan mengklik beberapa bagian dari halaman-halaman dokumen (web) itu. Proses yang dimulai dari permintaan webclient (browser), diterima web server, diproses, dan dikembalikan hasil prosesnya oleh web server ke web client lagi dilakukan secara transparan. Setiap orang dapat dengan mudah mengetahui apa yang terjadi pada tiap-tiap proses. Secara garis besarnya web server hanya memproses semua masukan yang diperolehnya dari web clientnya.
Instalasi Web server yang dibahas kali ini adalah Apache Web server – the HTTP web server
Web Server Apache
Apache merupakan web server yang paling banyak dipergunakan di Internet. Program ini pertama kali didesain untuk sistem operasi lingkungan UNIX. Namun demikian, pada beberapa versi berikutnya Apache mengeluarkan programnya yang dapat dijalankan di Windows NT. Apache mempunyai program pendukung yang cukup banyak. Hal ini memberikan layanan yang cukup lengkap bagi penggunanya. Beberapa dukungan Apache :
1. Kontrol Akses.
Kontrol ini dapat dijalankan berdasarkan nama host atau nomor IP
2. CGI (Common Gateway Interface)
Yang paling terkenal untuk digunakan adalah perl (Practical Extraction and Report Language), didukung oleh Apache dengan menempatkannya sebagai modul (mod_perl)
3. PHP (Personal Home Page/PHP Hypertext Processor);
Program dengan metode semacam CGI, yang memproses teks dan bekerja di server. Apache mendukung PHP dengan menempatkannya sebagai salah satu modulnya (mod_php). Hal ini membuat kinerja PHP menjadi lebih baik
4. SSI (Server Side Includes)
Web server Apache mempunyai kelebihan dari beberapa pertimbangan di atas :
a. Apache termasuk dalam kategori freeware.
b. Apache mudah sekali proses instalasinya jika dibanding web server lainnya seperti NCSA, IIS, dan lain-lain
c. Mampu beroperasi pada berbagai platform sistem operasi.
d. Mudah mengatur konfigurasinya. Apache mempunyai hanya empat file konfigurasi.
e. Mudah dalam menambahkan peripheral lainnya ke dalam platform web servernya.
Fasilitas atau ciri khas dari web server Apache adalah :
1) Dapat dijadikan pengganti bagi NCSA web server.
2) Perbaikan terhadap kerusakan dan error pada NCSA 1.3 dan 1.4.
3) Apache merespon web client sangat cepat jauh melebihi NCSA.
4) Mampu di kompilasi sesuai dengan spesifikasi HTTP yang sekarang.
5) Apache menyediakan feature untuk multihomed dan virtual server.
6) Kita dapat menetapkan respon error yang akan dikirim web server dengan menggunakan file atau skrip.
7) Server apache dapat otomatis berkomunikasi dengan client browsernya untuk menampilkan tampilan terbaik pada client browsernya. Web server Apache secara otomatis menjalankan file index.html, halaman utamanya, untuk ditampilkan secara otomatis pada clientnya.
8) Web server Apache mempunyai level-level pengamanan.
9) Apache mempunyai komponen dasar terbanyak di antara web server lain.
10) Ditinjau dari segi sejarah perkembangan dan prospeknya, Apache web server mempunyai prospek yang cerah. Apache berasal dari web server NCSA yang kemudian dikembangkan karena NCSA masih mempunyai kekurangan di bidang kompatibilitasnya dengan sistim operasi lain. Sampai saat ini, web server Apache terus dikembangkan oleh tim dari apache.org.
11) Performasi dan konsumsi sumber daya dari web server Apache tidak terlalu banyak, hanya sekitar 20 MB untuk file-file dasarnya dan setiap daemonnya hanya memerlukan sekitar 950 KB memory per child.
12) Mendukung transaksi yang aman (secure transaction) menggunakan SSL (secure socket layer).
13) Mempunyai dukungan teknis melalui web.
14) Mempunyai kompatibilitas platform yang tinggi.
15) Mendukung third party berupa modul-modul tambahan.
HTTP SERVER Singkatan dari Hypertext Transfer Protocol, yang mana adalah suatu protokol yang digunakan oleh World Wide Web. HTTP mendefinisikan bagaimana suatu pesan bisa diformat dan dikirimkan dari server ke client. HTTP juga mengatur aksi-aksi apa saja yang harus dilakukan oleh web server dan juga web browser sebagai respon atas perintah-perintah yang ada pada protokol HTTP ini. Sebagai contoh, ketika Anda mengetikkan suatu alamat atau URL pada internet browser Anda, maka sebenarnya web browser akan mengirimkan perintah HTTP ke web server. Web server kemudian akan menerima perintah ini dan melakukan aktivitas sesuai dengan perintah yang diminta oleh web browser (misalnya akses ke database, file, e-mail dan lain sebagainya). Hasil aktivitas tadi akan dikirimkan kembali ke web browser untuk ditampilkan kepada pengguna.
Instalasi web server
Sebelum membuat web server pastikan bahwa DNS Server kita telah aktif. Setelah dipastikan DNS kita aktif, maka dapat kemudian diakses dengan menggunakan protocol http. Contohnya adalah http://www.ria.com
Tampilan yang akan muncul pada halaman pertama web adalah “ IT WORKS”. Isi dari halaman pertama ini dapat kita ganti/edit sesuai dengan keinginan kita dengan cara mengubah isi dari file html-nya. Caranya sebagai berikut:
# sudo su
# nano/var/ww/index.html
tampilannya akan seperti tampilan dibawah ini.
(center) fungsi nya adalah supaya tulisan yang telah dibuat berada/posisi nya di tengah-tengah
Setelah itu untuk menampilkan hasilnya yaitu menggunakan browser he http://www.ria.com/
Dan hasil tampilannya akan seperti tampilan dibawah ini.
Setelah itu kita membuat web server yang mana apa bila kita menginginkan cara cepat untuk menuju web yang kita inginkan.
Contohnya kita membuat web dengan nama coba.
Cara nya sama saja seperti membuat veb server biodata diatas yaitu:
# mkdir /var/www/coba
fungsi perintah ini adalah cara untuk membuat file coba didalam folder /var/www.
# nano /var/www/coba/index.html
fungsi perintah diatas adalah untuk mengubah atau membuat isi file coba yg akan dibuat
Setelah itu akan keluar tampilan seperti dibawah ini
Setelah itu di save dan untuk melihat hasilnya dapat di browser he http://www.ria.com/coba/
Dan pada percobaan web server yang terakhir adalah membuat web server yang lebih mudah digunakan fungsinya kita dapat 1 kali browser saja maksudnya adalah apabila kita membrowser ke http://www.ria.com/ kita dapat langsung melihat tampilan biodata seperti tampilan diatas dan kita juga dapat membuka web server coba kita tadi. Selain itu kita juga bias membuka blog kita.
Cara nya sama saja yaitu:
# nano /var/www/coba/index.html
Dan akan tampil tampilan seperti dibawah ini.
Fungsi (a href =”/coba) adalah apabila kita ingin cara cepat ke web server tinggal meng klik tulisan untuk pergi ke folder ini coba klik ini.
Seperti yang ditunjukkan pada tampilan di bawah ini setelah kita membrows ke http://www.ria.com/
Setelah kita klik maka akan tampil seperti tampilan di bawah ini dan hasil tampilannya sama saja seperti tampilan pada percobaan web server tadi.
Fungsi (a href =http:”http//rhewel.blogspot.com) adalah cara cepat untuk masuk/login ke blog rhewel.blogspot.com tinggal mengklik pada tampilan yg bertulisan untuk situs blog. Seperti yang ditunjukkan pada tampilan di bawah ini setelah kita membrows ke http://www.ria.com/
Dan setelah kita meng klik untuk situs blog maka akan langsung masuk/ login ke blog kita.
Yang mana tampilannya seperti dibawah ini.
Virtual Hosting
Virtual server web hosting adalah salah satu web hosting yang paling populer layanan yang tersedia kepada pelanggan dan pemilik bisnis saat ini. Virtual hosting lebih disukai oleh kebanyakan orang sangat efisien karena biaya, rendah dan solusi perawatan yang rendah. Dalam tipe hosting, sumber daya yang tidak dibagi dengan situs-situs lain. Mereka diberi jumlah yang tetap sumber daya dengan sistem operasi mereka sendiri pada server virtual hosting, baik dengan bagian terisolasi ruang disk atau hard drive tertentu pada server. Setiap masalah teknis yang dihadapi oleh situs lain pada server host tidak akan menimbulkan perbedaan dengan situs Anda. Dengan sistem ini pemilik dapat menginstal sistem operasi pilihannya dan bahkan menyesuaikan halaman web.
Mengapa virtual hosting adalah pilihan yang tepat untuk sebagian besar perusahaan:
Harga Terjangkau: Virtual hosting memberikan semua keuntungan dari sebuah dedicated server di sebagian kecil dari biaya dedicated server. Dengan ini Anda memiliki fleksibilitas hosting domain unlimited dengan server virtual pribadi Anda.
Virtual Host merupakan cara untuk mengatur banyak website atau URL di dalam satu mesin atau satu IP. Misalkan kita mempunyai banyak domain tapi hanya mempunyai 1 IP public atau 1 server. Cara untuk mengatasi masalah itu adalah dengan cara membuat virtualhost yang ada di settingan apachenya. Virtual Host bisa anda gunakan setelah anda menginstall package-package apache dan sudah pasti web server anda sudah berjalan dengan baik.
Lebih kuat: Dengan server virtual hosting Anda availing layanan dari dedicated server dibagi menjadi beberapa server. Anda memiliki server yang lebih bandwidth dan kontrol yang lebih besar dibandingkan dengan shared hosting. Setiap partisi memiliki sistem operasi sendiri dan sumber daya perangkat keras.
Unlimited akses root: Virtual private server seperti dedicated server memberikan Anda akses root tak terbatas yang memungkinkan Anda untuk mengkonfigurasi dan mengubah situs Web Anda tanpa mempengaruhi situs-situs lain. Hal ini mengurangi risiko downtime karena kesalahan yang dilakukan oleh orang lain diciptakan. Karena mereka tidak terlihat oleh orang lain, situs web menikmati keuntungan isolasi lengkap.
keamanan Total: Sejak server virtual tidak berbagi ruang mereka dengan pelanggan lain, mereka menikmati total keamanan seperti dedicated server.
INSTALASI VIRTUAL HOSTING PADA UBUNTU 9.10
Saya akan membuat virtual host yang ada sebelumnya atau yang sering kita kenal dengan nama localhost. sebelum kita membuat virtual host pastikan dahulu bahwa apache sudah terinstall di komputer kita sendiri, Setelah sudah dipastikan terinstall apache-nya kemudian cara selanjutnya adalah:
1. Membuat dahulu sebuah directory baru di /var/www dengan cara :
# sudo su
# mkdir /var/www/rhewel
2. kedua kita copy file yang berada di /etc/apache2/sites-available/default /etc/apache2/sites-available/ria dengan cara :
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ria
(ganti nama ria dengan nama virtual host yang akan dibuat)
3. Edit file ria dengan cara:
# nano /etc/apache2/sites-available/ria
edit file yang dibawah ini saja
ServerAdmin webmaster@localhost
ServerName jartel.ria.com
DocumentRoot /home/jartel10/
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
Kemudian di save dengan cara tekan ctr+x lalu tekan y dan tekan enter.
4. Untuk mengaktifkannya dapat dengan cara
# a2ensite ria
(Perlu di ingat dhika adalah nama file konfigurasi virtual host yang kita copy bukan nama folder yang kita buat di /var/www/)
5. Dan tahap selanjutnya dengan me-restart service apache itu dengan cara :
# /etc/init.d/apache2 restart
6. Jadi secara simple adalah VirtualHost itu adalah belokan dimana directory masing2 domain tersebut.
Jika anda mempunya 1 domain atau 2 masih bisa dibilang belum memusingkan untuk configurasi file http.conf-nya. Tetapi jika anda sudah mempunya banyak domain diarahkan ke 1 server, misal anda mempunya 10 domain hayoooo gimana? saya juga pernah mengalami hal serupa, file di http.conf itu banyak sekali nama domain dan hampir serupa bentuknya, bisa lelah mata kita melihatnya. Untuk masalah seperti itu anda sebaiknya membuat file configuration yang baru. Coba anda membuat directory dimana file konfigurasi domain tersebut berada.
7. Sekarang tahap terakhir untuk memastikan bahwa virtual host yang kita buat dapat berjalan dengan baik dengan cara mengedit file hosts dengan cara :
# nano /etc/hosts
tambahkan baris berikut :
127.0.0.1 ria.com
menyimpan file konfigrasi dan kita dapat menjalankan konfigurasi virtual engan cara membuka browser dan akan tampil seperti pada tampilan dibawah ini:
Simpan file konfigurasi dan anda bisa menjalankan virtual host dengan cara membuka browser anda dan ketikkan alamat http://ria.com
8. Bila ingin terlihat buatlah file bernama index.html sendiri dan simpan di directory ria (folder yang anda buat di /var/www/rhewel).
untuk mengubah isi dari halaman virtual hosting kita yaitu dengan cara:
# nano /index.html
Index html di tunjukkan pada tampilan dibawah ini.
Dan hasil nya pada saat di browser ke http://jartel.ria.com/
HTTPS
https adalah versi aman dari HTTP, protokol komunikasi dari World Wide Web. Ditemukan oleh Netscape Communications Corporation untuk menyediakan autentikasi dan komunikasi tersandi dan penggunaan dalam komersi elektris.
Selain menggunakan komunikasi plain text, HTTPS menyandikan data sesi menggunakan protokol SSL (Secure Socket layer) atau protokol TLS (Transport Layer Security). Kedua protokol tersebut memberikan perlindungan yang memadai dari serangan eavesdroppers, dan man in the middle attacks. Pada umumnya port HTTPS adalah 443.
Tingkat keamanan tergantung pada ketepatan dalam mengimplementasikan pada browser web dan perangkat lunak server dan didukung oleh algorithma penyandian yang aktual.
Oleh karena itu, pada halaman web digunakan HTTPS, dan URL yang digunakan dimulai dengan ‘https://’ bukan dengan ‘http://’
Kesalah pahaman yang sering terjadi pada pengguna kartu kredit di web ialah dengan menganggap HTTPS “sepenuhnya” melindungi transaksi mereka. Sedangkan pada kenyataannya, HTTPS hanya melakukan enkripsi informasi dari kartu mereka antara browser mereka dengan web server yang menerima informasi. Pada web server, informasi kartu mereke secara tipikal tersimpan di database server (terkadang tidak langsung dikirimkan ke pemroses kartu kredit), dan server database inilah yang paling sering menjadi sasaran penyerangan oleh pihak-pihak yang tidak berkepentingan
Membuka sebuah koneksi HTTPS mirip dengan membuka koneksi HTTP. Satu – satunya perbedaan antara HTTP dengan HTTPS adalah URL yang diberikan pada Connector.open() dan meng-castingnya sebagai Https Connection class variable.
sebuah CertificateException akan terjadi bila terdapat kegagalan dalam verifikasi terhadap certificate
A. SSL dan TLS
Secure Socket Layer (SSL) dan Transport Layer Security (TLS), merupakan kelanjutan dari protokol kriptografi yang menyediakan komunikasi yang aman di Internet
Protocol SSL dan TLS berjalan pada layer dibawah application protocol seperti HTTP, SMTP and NNTP dan di atas layer TCP transport protocol, yang juga merupakan bagian dari TCP/IP protocol. Selama SSL dan TLS dapat menambahkan keamanan ke protocol apa saja yang menggunakan TCP, keduanya terdapat paling sering pada metode akses HTTPS. HTTPS menyediakan keamanan web-pages untuk aplikasi seperti pada Electronic commerce. Protocol SSL dan TLS menggunakan cryptography public-key dan sertifikat publik key untuk memastikan identitas dari pihak yang dimaksud. Sejalan dengan peningkatan jumlah client dan server yang dapat mendukung TLS atau SSL alami, dan beberapa masih belum mendukung. Dalam hal ini, pengguna dari server atau client dapat menggunakan produk standalone-SSL seperti halnya Stunnel untuk menyediakan enkripsi SSL.
Sejarah dan pengembangan: Dikembangkan oleh Netscape, SSL versi 3.0 dirilis pada tahun 1996, yang pada akhirnya menjadi dasar pengembangan Transport Layer Security, sebagai protocol standart IETF. Definisi awal dari TLS muncul pada RFC,2246 : “The TLS Protocol Version 1.0″. Visa, MaterCard, American Express dan banyak lagi institusi finansial terkemuka yang memanfaatkan TLS untuk dukungan commerce melalui internet. Seprti halnya SSL, protocol TLS beroperasi dalam tata-cara modular. TLS didesain untuk berkembang, dengan mendukung kemampuan meningkat dan kembali ke kondisi semula dan negosiasi antar ujung.
B. Jaminan HTTPS
Bayangkan bila suatu saat anda menelpon Call Center suatu bank untuk melakukan transaksi. Sangat penting bagi bank untuk memastikan dulu siapa anda, sebelum melakukan transaksi seperti yang anda minta. Karena melalui telepon, bank hanya bisa mendengar suara anda, mungkin saja ada orang lain yang berpura-pura menjadi anda dan menguras habis rekening anda.
Begitu pula di internet, ketika anda mengakses suatu website, anda harus benar-benar yakin bahwa anda sedang mengakses server yang benar, bukan situs palsu yang berminat untuk mencuri data rahasia anda. Sangat berbahaya akibatnya bila anda terjebak mengakses situs palsu, sebab itu artinya anda memberikan data rahasia anda pada orang yang salah.
Inilah yang disebut dengan Authentication, yaitu memastikan identitas, siapa anda. Ketika anda berkomunikasi dengan orang lain, anda harus tahu betul dengan siapa anda berbicara.
Selain memastikan anda berbicara dengan orang yang benar, sangat penting pula bahwa hubungan telpon antara anda dan bank tidak didengarkan oleh orang lain, karena anda akan membicarakan hal yang sensitif dan rahasia seperti PIN. Inilah yang disebut dengan Confidentiality, yaitu kerahasiaan data, memastikan tidak ada kebocoran data di tengah jalan.
Ketika anda mengakses internet, paket data yang anda kirim akan berkelana dari satu server ke server lain sebelum mencapai server tujuan. Sangat mudah bagi orang lain untuk melakukan sniffing, mengintip data anda yang lewat karena internet adalah jaringan umum yang bebas dipakai siapa saja.
Itulah dua hal utama yang dijamin oleh HTTPS, yaitu Authentication (who are you speaking with?) dan Confidentiality (is someone listening to your conversation?). Authentication dan Confidentiality dalam https dijamin dengan perpaduan penggunaan kriptografi simetris dan asimetris.
C. Public Key/Asymmetric Cryptography (PKC) and Symmetric Cryptography
Setiap enkripsi dan dekripsi pasti memerlukan kunci rahasia (enkripsi/dekripsi tanpa kunci rahasia, itu namanya encoding/decoding). Bila enkripsi dan dekripsi dilakukan hanya dengan satu kunci yang sama, ini adalah jenis enkripsi simetris. Keunggulannya adalah kecepatannya tinggi karena tidak enkripsi simetris tidak membutuhkan komputasi yang rumit. Namun kelemahannya adalah kesulitan dalam melakukan pertukaran kunci.
Bayangkan bila Alice ingin berkomunikasi dengan Bob dengan kriptografi simetris. Sebelum bisa berhubungan, keduanya harus menyepakati bersama kunci yang akan dipakai. Bagaimana cara menegosiasikan kunci ini? Apakah dikirim melalui sms, email atau telpon? Bukankah sms, email dan telpon bisa disadap?
PKC datang membawa solusi (jadi seperti kampanye), yaitu dengan penggunaan dua macam kunci, yaitu publik dan private. Jadi Alice dan Bob masing-masing harus sudah mempunyai kunci public dan private. Kunci public untuk diberikan pada orang lain (bukan kunci rahasia), dan kunci private harus dirahasiakan. Bila Alice ingin mengirim pesan ke Bob, maka Alice harus meng-enkrip pesannya dengan kunci publik milik Bob. Untuk membaca pesan Alice, Bob bisa men-dekripnya dengan kunci private Bob sendiri. Jadi ingat, bahwa kunci untuk enkripsi dan dekripsi selalu berlawanan. Lawan dari kunci publik adalah kunci private, lawan dari kunci private adalah kunci publik.
• Bila pesan di-enkrip dengan kunci publik, maka dekrip-nya dengan kunci private: Artinya hanya bisa dibuka oleh pemilik kunci private.
• Bila pesan di-enkrip dengan kunci private, maka dekrip-nya dengan kunci public: Artinya semua orang bisa men-dekrip.
Apa perlunya meng-enkrip pesan dengan kunci private? Karena semua orang bisa membacanya. Kalau enkripsi dengan kunci publik tujuannya untuk kerahasiaan (Confidentiality), maka enkripsi dengan kunci private tujuannya untuk Authentication: Memastikan siapa pembuat pesan.
D. Man-in-the-Middle (MITM) Problem
PKC ternyata juga tidak terbebas dari masalah. Bayangkan bila Alice ingin mengirim pesan ke Bob. Charlie sebagai orang ke-3 ingin mendengarkan pesan dari Alice ke Bob. Berikut skenario tipu muslihat Charlie:
1. Sebelum bisa mengirim pesan rahasia. Alice meminta Bob untuk mengirimkan kunci publiknya.
2. Bob mengirim kunci publiknya ke Alice.
3. Sebelum tiba di Alice, kunci publik Bob dicatat Charlie dan diganti dengan kunci publiknya sendiri, lalu diteruskan ke Alice.
4. Alice tertipu, mengira kunci publik yang diterimanya adalah kunci publik Bob, padahal itu milik Charlie.
5. Alice mengenkrip pesannya dengan kunci publik Charlie (bukannya Bob), dan mengirimkannya ke Bob.
6. Sebelum tiba di Bob, pesan Alice di-dekrip oleh Charlie dengan kunci private Charlie (karena enkripnya dengan kunci publik Charlie).
7. Agar Bob tidak curiga, pesan yang telah di-dekrip itu, dienkrip lagi dengan kunci publik Bob yang sebelumnya sudah dicatat lalu dikirim ke Bob.
8. Bob men-dekrip pesan itu dengan kunci private-nya, dan pesan itu dibaca oleh Bob seperti tidak terjadi apa-apa.
Dalam skenario tersebut, Charlie telah sukses berperan sebagai Man-in-the-Middle yang menyadap pesan dari Alice ke Bob tanpa disadari keduanya.
Jadi mirip ayam dan telur juga kan? Untuk mendapatkan kunci publik harus memastikan identitas pembuat pesan, sedangkan untuk memastikan identitas pembuat pesan harus tahu kunci publik.
E. Solusi Mendapatkan Kunci Publik
Kita sudah melihat bahwa PKC juga memiliki kelemahan terhadap serangan mitm. Agar serangan mitm tidak terjadi dibutuhkan mekanisme untuk mendapatkan publik key yang benar.
Untuk memecahkan masalah ayam dan telur dalam PKC, dibutuhkan bantuan pihak ke-3 sebagai pihak penjamin yang kunci publiknya telah dikenal sebelumnya.
Mari kita buat ilustrasinya pengembangan dari kasus mitm oleh Charlie sebelumnya, anggaplah pihak penjamin itu adalah Dedy dengan kunci publik yang telah dikenal sebelumnya oleh Alice.
1. Ketika Alice ingin mengetahui kunci publik Bob, maka Bob sebelumnya harus meminta Dedy untuk membuat surat jaminan yang berisi kunci publik Bob dan pernyataan bahwa Bob adalah orang baik dan rajin menabung.
2. Kemudian surat itu di-enkrip dengan kunci private Dedy untuk memastikan bahwa surat itu benar dibuat oleh Dedy.
3. Bila Alice bertanya pada Bob, “Hey Bob tolong kirim kunci publikmu, aku ada pesan rahasia untukmu”. Maka Bob akan mengirimkan surat jaminan dari Dedy pada Alice.
4. Ketika surat jaminan yang dikirim Bob tiba di Alice. Alice bisa menguji identitas pembuat surat itu dengan cara men-dekrip dengan kunci publik Dedy yang sudah dikenalnya.
5. Bila berhasil di-dekrip, maka surat jaminan itu benar dibuat oleh Dedy. Di dalam surat jaminan itu tertera juga kunci publik Bob. Kini Alice siap mengirim pesan rahasia pada Bob.
Bagaimana dengan Charlie? Bila Charlie nekat mengganti surat jaminan Dedy dengan surat jaminan yang dibuatnya sendiri lalu mengirimnya ke Alice. Maka Alice dengan mudah mengetahui bahwa surat ini palsu, karena tidak bisa didekrip dengan kunci publik Dedy, artinya surat jaminan ini bukan dibuat oleh Dedy.
Why We Need Authentication
Mungkin ada yang bingung sebenarnya untuk apa sih otentikasi server itu? Bukankah kalau kita buka yahoo.com, pasti yang menjawab adalah servernya yahoo, bukan servernya google. Kan tidak mungkin bisa tertukar begitu. Benarkah tidak mungkin tertukar?
Ketika kita mengakses situs, yang kita tulis di address bar browser biasanya adalah domain name, misalkan yahoo.com. Selanjutnya browser akan meminta DNS untuk menerjemahkan yahoo.com menjadi IP address. Baru kemudian browser bisa berkomunikasi dengan server.
Nah, proses pengubahan dari domain name ke IP address ini yang menjadi celah yang memungkinkan seseorang tersesat ke server yang salah. Dengan teknik ARP poisoning, DNS cache poisoning, atau proses routing yang sengaja disesatkan, seseorang bisa saja bukan mengakses server yang benar.
Untuk itulah kita perlu Authentication.
Authentication: Who are you speaking with.
Mari kita bahas bagaimana https menjamin authentication. Sebelum berkomunikasi dengan server, browser mensyaratkan server untuk meng-otentikasi dirinya, menunjukkan bukti identitasnya. Bukti identitas ini berbentu sertifikat yang ditanda-tangani (digital signature) oleh penjamin yang disebut Certificate Authority, mirip dengan ilustrasi Dedy sebagai penjamin Bob di atas. Dalam sertifikat tersebut tertera antara lain: nama perusahaan, alamat web, dan kunci publik.
Ketika browse menghubungi server, untuk menunjukkan identitas dan memberikan kunci publiknya, server akan mengirimkan sertifikatnya. Kemudian browser akan memverifikasi apakah sertifikat itu ditanda-tangani oleh penjamin (CA) yang trusted (browser memiliki daftar trusted CA). Jika tanda tangan digital CA pada sertifikat itu valid, maka dijamin sertifikat itu benar dibuat oleh CA. Selain itu browse juga akan memeriksa tanggal expired sertifikatnya dan membandingkan alamat web yang ada di sertifikat dengan server yang sedang dihubungi. Jika semuanya valid, browser akan mengambil kunci publik server yang tertera pada sertifikat.
Dengan kunci publik server di tangan, browser akan mencoba melakukan komunikasi dengan mengirimkan pesan ter-enkripsi. Bila server bisa menjawab pesan ini, maka server itu pasti punya kunci private, dengan kata lain serve itu pasti benar-benar pemilik kunci publik yang tertera di sertifikat.
Dengan cara ini browser akan yakin sedang terhubung dengan server yang benar.
Sebenarnya https bukanlah satu protokol, tapi kumpulan protokol (dalam hal ini saja banyak yang salah paham) yang diberi nama HTTPS. Kumpulan protokol yang membentuk https adalah http yang ditumpangkan di atas SSL (Secure Socket Layer) atau TLS (Transport Layer Security). Jadi kalau dalam layer posisinya dari bawah ke atas adalah TCP -> SSL/TLS -> HTTP. SSL dan TLS adalah protokol yang secure dalam artian seluruh data yang dikirim dan diterima dalam keadaan ter-enkrip. Sedangkan http adalah protokol yang tidak secure karena datanya telanjang. Perkawinan antara http dan (SSL atau TLS) menghasilkan keturunan yang lebih unggul dari kedua orang tuanya, yang disebut https.
Mari kita lihat interaksi yang terjadi antar protokol tersebut. Bayangkan anda sedang membuka halaman https, dan browser anda sudah terhubung dengan web server dalam mode secure (biasanya muncul tanda gembok di status bar). Ketika anda meng-klik sebuah link, yang terjadi adalah browser mengirimkan request GET dalam protokol HTTP (tidak ter-enkrip). Request GET ini diserahkan pada layer SSL/TLS untuk di-enkrip. Hasil enkripsi request GET ini kemudian diserahkan pada layer TCP untuk dikirim ke tujuan (server web).
F. Kombinasi Symmetric dan Asymmetric Cryptography
Dalam https komunikasi yang terjadi semua ter-enkripsi. Seperti yang sudah saya jelaskan di awal, masing-masing jenis enkripsi memiliki keunggulan dan kelemahan. Keunggulan kriptografi simetris adalah kecepatannya yang tinggi. Sedangkan keunggulan kriptografi asimetris adalah kemudahan dalam pertukaran kunci.
Oleh karena itu https memadukan kedua jenis enkripsi ini. Pada tahap awal komunikasi, client dan server berkomunikasi dengan menggunakan kriptografi asimetris. Enkripsi ini hanya ditujukan untuk menyepakati dan saling bertukar kunci rahasia yang akan dipakai dengan kriptografi simetris. Jadi pertukaran kunci rahasia dilakukan dalam keadaan ter-enkrip dengan kriptografi asimetris.
Setelah kedua pihak memegang kunci rahasia yang sama, komunikasi selanjutnya dilakukan dengan kriptografi simetris karena lebih murah dan cepat.
G. Yang Tidak Dijamin HTTPS
SSL hanya menjamin authentication dan confidentiality saja. Padahal masih banyak attack yang mengancam aplikasi web, antara lain SQL Injection, XSS, CSRF, Denial of Service, Brute-Force-Attack. Ya benar, semua serangan terhadap aplikasi web selain sniffing dan mitm bisa dilakukan tanpa hambatan.
Selain itu kerahasiaan data hanya berlaku di perjalanan antara client hingga server. Sedangkan di dalam komputer client atau server itu sendiri, data memungkinkan untuk disadap dengan penyadapan di level sistem operasi.
Hebatnya lagi, karena komunikasi antara client dan server ter-enkrip, maka IDS (Intrusion Detection System) tidak berguna. IDS bekerja dengan cara meng-inspeksi paket yang masuk (persis seperti sniffer). Bila paket mengandung pattern yang mencurigakan, maka IDS akan membunyikan alarm. Bila komunikasi antara client dan server ter-enkrip, maka IDS tidak bisa melihat isi paket, apakah mengandung pattern yang berbahaya atau tidak.
Ketika request GET yang ter-enkrip ini sampai di tempat tujuan (server web). Pertama paket akan di-handle oleh layer TCP. Kemudian paket itu diserahkan pada layer SSL/TLS untuk di-dekrip. Hasilnya adalah paket dalam format HTTP tidak ter-enkrip. Baru kemudian paket HTTP ini diserahkan pada yang berhak, yaitu server web (misal:Apache). Setelah Apache selesai menjawab, dia akan mengirimkan balasan request GET tersebut dalam bentuk paket HTTP. Paket ini akan di-enkrip dulu oleh layer SSL/TLS sebelum diserahkan pada layer TCP dan dikirim ke client (browser yang mengirimkan request GET semula).
SSL menjamin kerahasiaan komunikasi end-to-end, artinya mulai dari ujung server hingga ujung client. Tidak ada satu pun server atau komputer yang menjadi perantara antara client hingga server bisa membaca isinya.
Pada percobaan ini saya akan menggunakan SSL untuk www.ria.com saya. dalam tutorial ini ria.com adalah domain saya sendiri ,ini akan menghasilkan peringatan browser saat Anda akses https: / / www.ria.com dan bagaimana untuk mendapatkan sertifikat dari otoritas sertifikat terpercaya (CA) seperti Verisign, Thawte, Comodo, dll - dengan sertifikat dari CA yang terpercaya, pengunjung Anda tidak akan melihat peringatan apapun browser, seperti halnya dengan diri menandatangani sertifikat.
Hal ini penting untuk mengetahui bahwa Anda dapat memiliki hanya satu SSL per alamat IP - jika Anda ingin meng-host beberapa vhost SSL, Anda perlu beberapa alamat IP!
Langkah pertama adalah mengaktifkan SSL dengan cara memastikan login sebagai root di ubuntu.
# sudo su
Untuk mengaktifkan modul apache SSL digunakan:
# a2enmod ssl
Setelah itu merestart engan cara
# /etc/init.d/apache2 restart
Setelah di restart apache harus mengetahui pada port 443 yang bias digunakan untuk konfigurasi HTTPS seperti langkah dibawah:
# netstat -tap | grep https
root@server1:~# netstat -tap | grep https
tcp6 0 0 [::]:https [::]:* LISTEN 1238/apache2
root@server1:~#
Kemudian menSetting Up The Virtual host dengan cara untuk menciptakan www.ria.com virtual host dengan dokumen root / var / www / www.ria.com. :
# mkdir /var/www/www.ria.com
Apache dilengkapi dengan virtual host default SSL konfigurasi di dalam file / etc/apache2/sites-available/default-ssl. Saya menggunakan file tersebut sebagai template untuk virtual host www.ria.com
# cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/www.ria.com-ssl
Dan kemudian membuka template /etc/apache2/sites-available/www.ria.com-ssl dengan cara:
# vi /etc/apache2/sites-available/www.ria.com-ssl
Pastikan Anda menggunakan alamat IP yang benar pada baris xxx.xxx.xxx.xxx:443>
Seperti yang Anda lihat, Vhost default SSL ini menggunakan sertifikat snakeoil.
ServerAdmin webmaster@ria.com
ServerName www.ria.com:443
DocumentRoot /var/www/www.ria.com
Options FollowSymLinks
AllowOverride None
Seperti yang kita lihat, virtual host default ini menggunakan sertifikat snakeoil yang ditandatangani dengan Ubuntu:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Setelah itu Sekarang menonaktifkan virtual host default SSL (jika diaktifkan), mengaktifkan virtual host www.ria.com dan reload apache seperti langkah-langkah dibawah ini:
# a2dissite default-ssl
# a2ensite www.ria.com-ssl
# /etc/init.d/apache2 reload
Langkah terakhir adalah membuka browser dan pergi ke virtual host baru SSL anda ( https: / / www.ria.com dalam kasus ini). Karena kita menggunakan sertifikat default Ubuntu yang ditandatangani, kita harus mendapatkan peringatan bahwa sambungan untrusted (untuk menggunakan situs web saja, klik pada Saya Memahami Risiko dan ikuti petunjuk pada browser Anda) maka akan tampil halaman HTTPS seperti yang dibawah ini:
Referensi :
1. http://id.wikipedia.org/wiki/Hypertext_markup_language
2. http://www.ittelkom.ac.id/library/index.php?view=article&catid=10%3Ajaringan&id=406%3A-web-server-&option=com_content&Itemid=15
3. http://aminudin.net/?p=243
4. http://kubaat.wordpress.com/2009/10/18/membuat-virtual-hosting-di-ubuntu/
5. http://www.howtoforge.com/how-to-set-up-an-ssl-vhost-under-apache2-on-ubuntu 9.10-debian-lenny
6. http://id.wikipedia.org/wiki/Transport_Layer_Security
7. http://www.ilmuhacking.com/cryptography/understanding-https/
HTML berupa kode-kode tag yang menginstruksikan penjelajah web untuk menghasilkan tampilan sesuai dengan yang diinginkan. Sebuah file yang merupakan file HTML dapat dibuka dengan menggunakan penjelajah web seperti Mozilla Firefox atau Microsoft Internet Explorer. HTML juga dapat dikenali oleh aplikasi pembuka surel ataupun dari PDA dan perangkat lunak lain yang memiliki kemampuan browser. Dengan menggunakan perintah-perintah HTML memungkinkan pengguna untuk melakukan tugas-tugas berikut:
1. Menentukan ukuran dan alur tulisan.
2. Mengintegerasikan gambar dengan tulisan.
3. Membuat Pranala.
4. Mengintegerasikan berkas suara dan rekaman gambar hidup.
5. Membuat form interaktif.
HTML dokumen tersebut mirip dengan dokumen tulisan biasa, hanya dalam dokumen ini sebuah tulisan bisa memuat instruksi yang ditandai dengan kode atau lebih dikenal dengan TAG tertentu. Sebagai contoh jika ingin membuat tulisan ditampilkan menjadi tebal seperti: TAMPIL TEBAL, maka penulisannya dilakukan dengan cara: TAMPIL TEBAL. Tanda digunakan untuk mengaktifkan instruksi cetak tebal, diikuti oleh tulisan yang ingin ditebalkan, dan diakhiri dengan tanda untuk menonaktifkan cetak tebal tersebut. HTML lebih menekankan pada penggambaran komponen-komponen struktur dan formating di dalam halaman web daripada menentukan penampilannya.Sedangkan penjelajah web digunakan untuk menginterpretasikan susunan halaman ke gaya built-in penjelajah web dengan menggunakan jenis tulisan, tab, warna, garis, dan perataan text yang dikehendaki ke komputer yang menampilkan halaman web. Salah satu hal Penting tentang eksistensi HTML adalah tersedianya Lingua franca (bahasa Komunikasi) antar komputer dengan kemampuan berbeda. Pengguna Macintosh tidak dapat melihat tampilan yang sama sebagaimana tampilan yang terlihat dalam pc berbasis Windows. Pengguna Microsoft Windows pun tidak akan dapat melihat tampilan yang sama sebagaimana tampilan yang terlihat pada pengguna yang menggunakan Produk-produk Sun Microsystems. namun demikian pengguna-pengguna tersebut dapat melihat semua halaman web yang telah diformat dan berisi Grafika dan Pranala.
HTML memungkinkan kita untuk menyunting tampilan atau format berkas yang akan kita kirimkan melalui media daring. Beberapa hal yang dapat dilakukan dalam menentukan format berkas adalah :
1. Kita dapat menampilkan suatu kelompok kata dalam beberapa ukuran yang dapat digunakan untuk judul, heading dan sebagainya.
2. Kita dapat menampilkan tulisan dalam bentuk cetakan tebal
3. Kita dapat menampilkan sekelompok kata dalam bentuk miring
4. Kita dapat menampilkan naskah dalam bentuk huruf yang mirip dengan hasil ketikan mesin ketik
5. Kita dapat mengubah-ubah ukuran tulisan untuk suatu karakter tertentu.
Secara garis besar, terdapat 4 jenis elemen dari HTML:
6. structural. tanda yang menentukan level atau tingkatan dari sebuah tulisan (contoh, (h1)Golf(/h2) akan memerintahkan browser untuk menampilkan "Golf" sebagai tulisan tebal besar yang menunjukkan sebagai Heading 1
7. presentational. tanda yang menentukan tampilan dari sebuah tulisan tidak peduli dengan level dari tulisan tersebut (contoh, boldface akan menampilkan bold. Tanda presentational saat ini sudah mulai digantikan oleh CSS dan tidak direkomendasikan untuk mengatur tampilan tulisan,
8. hypertext. tanda yang menunjukkan pranala ke bagian dari dokumen tersebut atau pranala ke dokumen lain (contoh, Wikipedia akan menampilkan Wikipedia sebagai sebuah hyperlink ke URL tertentu),
Ada tiga macam link yang dapat kita gunakan :
1. Link menuju bagian lain dari page
2. Link menuju page lain dalam satu web site
3. Link menuju resource atau web site yang berbeda.
Selain markup presentational , markup yang lain tidak menentukan bagaimana tampilan dari sebuah tulisan. Namun untuk saat ini, penggunaan tag HTML untuk menentukan tampilan telah dianjurkan untuk mulai ditinggalkan, dan sebagai gantinya digunakan Cascading Style Sheets.
HTML tidak membedakan penggunaan huruf besar ataupun huruf kecil dari suatu elemen. Suatu elemen HTML terdiri dari tag-tag beserta teks yang ada dalam tag-tag tersebut. Tag ini dinyatakan dengan tanda lebih kecil (<) dan tanda lebih besar (>). Tag biasanya merupakan suatu pasangan yang disebut dengan : 1. Tag awal, dinyatakan dalam bentuk
Format :
Bagian BODY, yang dinyatakan dengan tag …, merupakan tubuh atau isi dari dokumen HTML dimana anda meletakan informasi yang akan ditampilkan pada browser.
Web Server
Web server adalah software yang menjadi tulang belakang dari world wide web (www). Web server menunggu permintaan dari client yang menggunakan browser seperti Netscape Navigator, Internet Explorer, Modzilla, dan program browser lainnya. Jika ada permintaan dari browser, maka web server akan memproses permintaan itu kemudian memberikan hasil prosesnya berupa data yang diinginkan kembali ke browser. Data ini mempunyai format yang standar, disebut dengan format SGML (standar general markup language). Data yang berupa format ini kemudian akan ditampilkan oleh browser sesuai dengan kemampuan browser tersebut. Contohnya, bila data yang dikirim berupa gambar, browser yang hanya mampu menampilkan teks (misalnya lynx) tidak akan mampu menampilkan gambar tersebut, dan jika ada akan menampilkan alternatifnya saja. Web server, untuk berkomunikasi dengan client-nya (web browser) mempunyai protokol sendiri, yaitu HTTP (hypertext transfer protocol).
Dengan protokol ini, komunikasi antar web server dengan client-nya dapat saling dimengerti dan lebih mudah. Seperti telah dijelaskan diatas, format data pada world wide web adalah SGML. Tapi para pengguna internet saat ini lebih banyak menggunakan format HTML (hypertext markup language) karena penggunaannya lebih sederhana dan mudah dipelajari. Kata HyperText mempunyai arti bahwa seorang pengguna internet dengan web browsernya dapat membuka dan membaca dokumen-dokumen yang ada dalam komputernya atau bahkan jauh tempatnya sekalipun.
Web Server juga disebut Suatu program (dan juga mesin yang menjalankan program) yang mengerti protokol HTTP dan dapat menanggapi permintaan-permintaan dari web browser yang menggunakan protokol tersebut. sedangkan WEB itu sendiri adalah Suatu sistem di internet yang memungkinkan siapapun agar bisa menyediakan informasi:information
Hal ini memberikan cita rasa dari suatu proses yang tridimensional, artinya pengguna internet dapat membaca dari satu dokumen ke dokumen yang lain hanya dengan mengklik beberapa bagian dari halaman-halaman dokumen (web) itu. Proses yang dimulai dari permintaan webclient (browser), diterima web server, diproses, dan dikembalikan hasil prosesnya oleh web server ke web client lagi dilakukan secara transparan. Setiap orang dapat dengan mudah mengetahui apa yang terjadi pada tiap-tiap proses. Secara garis besarnya web server hanya memproses semua masukan yang diperolehnya dari web clientnya.
Instalasi Web server yang dibahas kali ini adalah Apache Web server – the HTTP web server
Web Server Apache
Apache merupakan web server yang paling banyak dipergunakan di Internet. Program ini pertama kali didesain untuk sistem operasi lingkungan UNIX. Namun demikian, pada beberapa versi berikutnya Apache mengeluarkan programnya yang dapat dijalankan di Windows NT. Apache mempunyai program pendukung yang cukup banyak. Hal ini memberikan layanan yang cukup lengkap bagi penggunanya. Beberapa dukungan Apache :
1. Kontrol Akses.
Kontrol ini dapat dijalankan berdasarkan nama host atau nomor IP
2. CGI (Common Gateway Interface)
Yang paling terkenal untuk digunakan adalah perl (Practical Extraction and Report Language), didukung oleh Apache dengan menempatkannya sebagai modul (mod_perl)
3. PHP (Personal Home Page/PHP Hypertext Processor);
Program dengan metode semacam CGI, yang memproses teks dan bekerja di server. Apache mendukung PHP dengan menempatkannya sebagai salah satu modulnya (mod_php). Hal ini membuat kinerja PHP menjadi lebih baik
4. SSI (Server Side Includes)
Web server Apache mempunyai kelebihan dari beberapa pertimbangan di atas :
a. Apache termasuk dalam kategori freeware.
b. Apache mudah sekali proses instalasinya jika dibanding web server lainnya seperti NCSA, IIS, dan lain-lain
c. Mampu beroperasi pada berbagai platform sistem operasi.
d. Mudah mengatur konfigurasinya. Apache mempunyai hanya empat file konfigurasi.
e. Mudah dalam menambahkan peripheral lainnya ke dalam platform web servernya.
Fasilitas atau ciri khas dari web server Apache adalah :
1) Dapat dijadikan pengganti bagi NCSA web server.
2) Perbaikan terhadap kerusakan dan error pada NCSA 1.3 dan 1.4.
3) Apache merespon web client sangat cepat jauh melebihi NCSA.
4) Mampu di kompilasi sesuai dengan spesifikasi HTTP yang sekarang.
5) Apache menyediakan feature untuk multihomed dan virtual server.
6) Kita dapat menetapkan respon error yang akan dikirim web server dengan menggunakan file atau skrip.
7) Server apache dapat otomatis berkomunikasi dengan client browsernya untuk menampilkan tampilan terbaik pada client browsernya. Web server Apache secara otomatis menjalankan file index.html, halaman utamanya, untuk ditampilkan secara otomatis pada clientnya.
8) Web server Apache mempunyai level-level pengamanan.
9) Apache mempunyai komponen dasar terbanyak di antara web server lain.
10) Ditinjau dari segi sejarah perkembangan dan prospeknya, Apache web server mempunyai prospek yang cerah. Apache berasal dari web server NCSA yang kemudian dikembangkan karena NCSA masih mempunyai kekurangan di bidang kompatibilitasnya dengan sistim operasi lain. Sampai saat ini, web server Apache terus dikembangkan oleh tim dari apache.org.
11) Performasi dan konsumsi sumber daya dari web server Apache tidak terlalu banyak, hanya sekitar 20 MB untuk file-file dasarnya dan setiap daemonnya hanya memerlukan sekitar 950 KB memory per child.
12) Mendukung transaksi yang aman (secure transaction) menggunakan SSL (secure socket layer).
13) Mempunyai dukungan teknis melalui web.
14) Mempunyai kompatibilitas platform yang tinggi.
15) Mendukung third party berupa modul-modul tambahan.
HTTP SERVER Singkatan dari Hypertext Transfer Protocol, yang mana adalah suatu protokol yang digunakan oleh World Wide Web. HTTP mendefinisikan bagaimana suatu pesan bisa diformat dan dikirimkan dari server ke client. HTTP juga mengatur aksi-aksi apa saja yang harus dilakukan oleh web server dan juga web browser sebagai respon atas perintah-perintah yang ada pada protokol HTTP ini. Sebagai contoh, ketika Anda mengetikkan suatu alamat atau URL pada internet browser Anda, maka sebenarnya web browser akan mengirimkan perintah HTTP ke web server. Web server kemudian akan menerima perintah ini dan melakukan aktivitas sesuai dengan perintah yang diminta oleh web browser (misalnya akses ke database, file, e-mail dan lain sebagainya). Hasil aktivitas tadi akan dikirimkan kembali ke web browser untuk ditampilkan kepada pengguna.
Instalasi web server
Sebelum membuat web server pastikan bahwa DNS Server kita telah aktif. Setelah dipastikan DNS kita aktif, maka dapat kemudian diakses dengan menggunakan protocol http. Contohnya adalah http://www.ria.com
Tampilan yang akan muncul pada halaman pertama web adalah “ IT WORKS”. Isi dari halaman pertama ini dapat kita ganti/edit sesuai dengan keinginan kita dengan cara mengubah isi dari file html-nya. Caranya sebagai berikut:
# sudo su
# nano/var/ww/index.html
tampilannya akan seperti tampilan dibawah ini.
(center) fungsi nya adalah supaya tulisan yang telah dibuat berada/posisi nya di tengah-tengah
Setelah itu untuk menampilkan hasilnya yaitu menggunakan browser he http://www.ria.com/
Dan hasil tampilannya akan seperti tampilan dibawah ini.
Setelah itu kita membuat web server yang mana apa bila kita menginginkan cara cepat untuk menuju web yang kita inginkan.
Contohnya kita membuat web dengan nama coba.
Cara nya sama saja seperti membuat veb server biodata diatas yaitu:
# mkdir /var/www/coba
fungsi perintah ini adalah cara untuk membuat file coba didalam folder /var/www.
# nano /var/www/coba/index.html
fungsi perintah diatas adalah untuk mengubah atau membuat isi file coba yg akan dibuat
Setelah itu akan keluar tampilan seperti dibawah ini
Setelah itu di save dan untuk melihat hasilnya dapat di browser he http://www.ria.com/coba/
Dan pada percobaan web server yang terakhir adalah membuat web server yang lebih mudah digunakan fungsinya kita dapat 1 kali browser saja maksudnya adalah apabila kita membrowser ke http://www.ria.com/ kita dapat langsung melihat tampilan biodata seperti tampilan diatas dan kita juga dapat membuka web server coba kita tadi. Selain itu kita juga bias membuka blog kita.
Cara nya sama saja yaitu:
# nano /var/www/coba/index.html
Dan akan tampil tampilan seperti dibawah ini.
Fungsi (a href =”/coba) adalah apabila kita ingin cara cepat ke web server tinggal meng klik tulisan untuk pergi ke folder ini coba klik ini.
Seperti yang ditunjukkan pada tampilan di bawah ini setelah kita membrows ke http://www.ria.com/
Setelah kita klik maka akan tampil seperti tampilan di bawah ini dan hasil tampilannya sama saja seperti tampilan pada percobaan web server tadi.
Fungsi (a href =http:”http//rhewel.blogspot.com) adalah cara cepat untuk masuk/login ke blog rhewel.blogspot.com tinggal mengklik pada tampilan yg bertulisan untuk situs blog. Seperti yang ditunjukkan pada tampilan di bawah ini setelah kita membrows ke http://www.ria.com/
Dan setelah kita meng klik untuk situs blog maka akan langsung masuk/ login ke blog kita.
Yang mana tampilannya seperti dibawah ini.
Virtual Hosting
Virtual server web hosting adalah salah satu web hosting yang paling populer layanan yang tersedia kepada pelanggan dan pemilik bisnis saat ini. Virtual hosting lebih disukai oleh kebanyakan orang sangat efisien karena biaya, rendah dan solusi perawatan yang rendah. Dalam tipe hosting, sumber daya yang tidak dibagi dengan situs-situs lain. Mereka diberi jumlah yang tetap sumber daya dengan sistem operasi mereka sendiri pada server virtual hosting, baik dengan bagian terisolasi ruang disk atau hard drive tertentu pada server. Setiap masalah teknis yang dihadapi oleh situs lain pada server host tidak akan menimbulkan perbedaan dengan situs Anda. Dengan sistem ini pemilik dapat menginstal sistem operasi pilihannya dan bahkan menyesuaikan halaman web.
Mengapa virtual hosting adalah pilihan yang tepat untuk sebagian besar perusahaan:
Harga Terjangkau: Virtual hosting memberikan semua keuntungan dari sebuah dedicated server di sebagian kecil dari biaya dedicated server. Dengan ini Anda memiliki fleksibilitas hosting domain unlimited dengan server virtual pribadi Anda.
Virtual Host merupakan cara untuk mengatur banyak website atau URL di dalam satu mesin atau satu IP. Misalkan kita mempunyai banyak domain tapi hanya mempunyai 1 IP public atau 1 server. Cara untuk mengatasi masalah itu adalah dengan cara membuat virtualhost yang ada di settingan apachenya. Virtual Host bisa anda gunakan setelah anda menginstall package-package apache dan sudah pasti web server anda sudah berjalan dengan baik.
Lebih kuat: Dengan server virtual hosting Anda availing layanan dari dedicated server dibagi menjadi beberapa server. Anda memiliki server yang lebih bandwidth dan kontrol yang lebih besar dibandingkan dengan shared hosting. Setiap partisi memiliki sistem operasi sendiri dan sumber daya perangkat keras.
Unlimited akses root: Virtual private server seperti dedicated server memberikan Anda akses root tak terbatas yang memungkinkan Anda untuk mengkonfigurasi dan mengubah situs Web Anda tanpa mempengaruhi situs-situs lain. Hal ini mengurangi risiko downtime karena kesalahan yang dilakukan oleh orang lain diciptakan. Karena mereka tidak terlihat oleh orang lain, situs web menikmati keuntungan isolasi lengkap.
keamanan Total: Sejak server virtual tidak berbagi ruang mereka dengan pelanggan lain, mereka menikmati total keamanan seperti dedicated server.
INSTALASI VIRTUAL HOSTING PADA UBUNTU 9.10
Saya akan membuat virtual host yang ada sebelumnya atau yang sering kita kenal dengan nama localhost. sebelum kita membuat virtual host pastikan dahulu bahwa apache sudah terinstall di komputer kita sendiri, Setelah sudah dipastikan terinstall apache-nya kemudian cara selanjutnya adalah:
1. Membuat dahulu sebuah directory baru di /var/www dengan cara :
# sudo su
# mkdir /var/www/rhewel
2. kedua kita copy file yang berada di /etc/apache2/sites-available/default /etc/apache2/sites-available/ria dengan cara :
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ria
(ganti nama ria dengan nama virtual host yang akan dibuat)
3. Edit file ria dengan cara:
# nano /etc/apache2/sites-available/ria
edit file yang dibawah ini saja
ServerAdmin webmaster@localhost
ServerName jartel.ria.com
DocumentRoot /home/jartel10/
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
Kemudian di save dengan cara tekan ctr+x lalu tekan y dan tekan enter.
4. Untuk mengaktifkannya dapat dengan cara
# a2ensite ria
(Perlu di ingat dhika adalah nama file konfigurasi virtual host yang kita copy bukan nama folder yang kita buat di /var/www/)
5. Dan tahap selanjutnya dengan me-restart service apache itu dengan cara :
# /etc/init.d/apache2 restart
6. Jadi secara simple adalah VirtualHost itu adalah belokan dimana directory masing2 domain tersebut.
Jika anda mempunya 1 domain atau 2 masih bisa dibilang belum memusingkan untuk configurasi file http.conf-nya. Tetapi jika anda sudah mempunya banyak domain diarahkan ke 1 server, misal anda mempunya 10 domain hayoooo gimana? saya juga pernah mengalami hal serupa, file di http.conf itu banyak sekali nama domain dan hampir serupa bentuknya, bisa lelah mata kita melihatnya. Untuk masalah seperti itu anda sebaiknya membuat file configuration yang baru. Coba anda membuat directory dimana file konfigurasi domain tersebut berada.
7. Sekarang tahap terakhir untuk memastikan bahwa virtual host yang kita buat dapat berjalan dengan baik dengan cara mengedit file hosts dengan cara :
# nano /etc/hosts
tambahkan baris berikut :
127.0.0.1 ria.com
menyimpan file konfigrasi dan kita dapat menjalankan konfigurasi virtual engan cara membuka browser dan akan tampil seperti pada tampilan dibawah ini:
Simpan file konfigurasi dan anda bisa menjalankan virtual host dengan cara membuka browser anda dan ketikkan alamat http://ria.com
8. Bila ingin terlihat buatlah file bernama index.html sendiri dan simpan di directory ria (folder yang anda buat di /var/www/rhewel).
untuk mengubah isi dari halaman virtual hosting kita yaitu dengan cara:
# nano /index.html
Index html di tunjukkan pada tampilan dibawah ini.
Dan hasil nya pada saat di browser ke http://jartel.ria.com/
HTTPS
https adalah versi aman dari HTTP, protokol komunikasi dari World Wide Web. Ditemukan oleh Netscape Communications Corporation untuk menyediakan autentikasi dan komunikasi tersandi dan penggunaan dalam komersi elektris.
Selain menggunakan komunikasi plain text, HTTPS menyandikan data sesi menggunakan protokol SSL (Secure Socket layer) atau protokol TLS (Transport Layer Security). Kedua protokol tersebut memberikan perlindungan yang memadai dari serangan eavesdroppers, dan man in the middle attacks. Pada umumnya port HTTPS adalah 443.
Tingkat keamanan tergantung pada ketepatan dalam mengimplementasikan pada browser web dan perangkat lunak server dan didukung oleh algorithma penyandian yang aktual.
Oleh karena itu, pada halaman web digunakan HTTPS, dan URL yang digunakan dimulai dengan ‘https://’ bukan dengan ‘http://’
Kesalah pahaman yang sering terjadi pada pengguna kartu kredit di web ialah dengan menganggap HTTPS “sepenuhnya” melindungi transaksi mereka. Sedangkan pada kenyataannya, HTTPS hanya melakukan enkripsi informasi dari kartu mereka antara browser mereka dengan web server yang menerima informasi. Pada web server, informasi kartu mereke secara tipikal tersimpan di database server (terkadang tidak langsung dikirimkan ke pemroses kartu kredit), dan server database inilah yang paling sering menjadi sasaran penyerangan oleh pihak-pihak yang tidak berkepentingan
Membuka sebuah koneksi HTTPS mirip dengan membuka koneksi HTTP. Satu – satunya perbedaan antara HTTP dengan HTTPS adalah URL yang diberikan pada Connector.open() dan meng-castingnya sebagai Https Connection class variable.
sebuah CertificateException akan terjadi bila terdapat kegagalan dalam verifikasi terhadap certificate
A. SSL dan TLS
Secure Socket Layer (SSL) dan Transport Layer Security (TLS), merupakan kelanjutan dari protokol kriptografi yang menyediakan komunikasi yang aman di Internet
Protocol SSL dan TLS berjalan pada layer dibawah application protocol seperti HTTP, SMTP and NNTP dan di atas layer TCP transport protocol, yang juga merupakan bagian dari TCP/IP protocol. Selama SSL dan TLS dapat menambahkan keamanan ke protocol apa saja yang menggunakan TCP, keduanya terdapat paling sering pada metode akses HTTPS. HTTPS menyediakan keamanan web-pages untuk aplikasi seperti pada Electronic commerce. Protocol SSL dan TLS menggunakan cryptography public-key dan sertifikat publik key untuk memastikan identitas dari pihak yang dimaksud. Sejalan dengan peningkatan jumlah client dan server yang dapat mendukung TLS atau SSL alami, dan beberapa masih belum mendukung. Dalam hal ini, pengguna dari server atau client dapat menggunakan produk standalone-SSL seperti halnya Stunnel untuk menyediakan enkripsi SSL.
Sejarah dan pengembangan: Dikembangkan oleh Netscape, SSL versi 3.0 dirilis pada tahun 1996, yang pada akhirnya menjadi dasar pengembangan Transport Layer Security, sebagai protocol standart IETF. Definisi awal dari TLS muncul pada RFC,2246 : “The TLS Protocol Version 1.0″. Visa, MaterCard, American Express dan banyak lagi institusi finansial terkemuka yang memanfaatkan TLS untuk dukungan commerce melalui internet. Seprti halnya SSL, protocol TLS beroperasi dalam tata-cara modular. TLS didesain untuk berkembang, dengan mendukung kemampuan meningkat dan kembali ke kondisi semula dan negosiasi antar ujung.
B. Jaminan HTTPS
Bayangkan bila suatu saat anda menelpon Call Center suatu bank untuk melakukan transaksi. Sangat penting bagi bank untuk memastikan dulu siapa anda, sebelum melakukan transaksi seperti yang anda minta. Karena melalui telepon, bank hanya bisa mendengar suara anda, mungkin saja ada orang lain yang berpura-pura menjadi anda dan menguras habis rekening anda.
Begitu pula di internet, ketika anda mengakses suatu website, anda harus benar-benar yakin bahwa anda sedang mengakses server yang benar, bukan situs palsu yang berminat untuk mencuri data rahasia anda. Sangat berbahaya akibatnya bila anda terjebak mengakses situs palsu, sebab itu artinya anda memberikan data rahasia anda pada orang yang salah.
Inilah yang disebut dengan Authentication, yaitu memastikan identitas, siapa anda. Ketika anda berkomunikasi dengan orang lain, anda harus tahu betul dengan siapa anda berbicara.
Selain memastikan anda berbicara dengan orang yang benar, sangat penting pula bahwa hubungan telpon antara anda dan bank tidak didengarkan oleh orang lain, karena anda akan membicarakan hal yang sensitif dan rahasia seperti PIN. Inilah yang disebut dengan Confidentiality, yaitu kerahasiaan data, memastikan tidak ada kebocoran data di tengah jalan.
Ketika anda mengakses internet, paket data yang anda kirim akan berkelana dari satu server ke server lain sebelum mencapai server tujuan. Sangat mudah bagi orang lain untuk melakukan sniffing, mengintip data anda yang lewat karena internet adalah jaringan umum yang bebas dipakai siapa saja.
Itulah dua hal utama yang dijamin oleh HTTPS, yaitu Authentication (who are you speaking with?) dan Confidentiality (is someone listening to your conversation?). Authentication dan Confidentiality dalam https dijamin dengan perpaduan penggunaan kriptografi simetris dan asimetris.
C. Public Key/Asymmetric Cryptography (PKC) and Symmetric Cryptography
Setiap enkripsi dan dekripsi pasti memerlukan kunci rahasia (enkripsi/dekripsi tanpa kunci rahasia, itu namanya encoding/decoding). Bila enkripsi dan dekripsi dilakukan hanya dengan satu kunci yang sama, ini adalah jenis enkripsi simetris. Keunggulannya adalah kecepatannya tinggi karena tidak enkripsi simetris tidak membutuhkan komputasi yang rumit. Namun kelemahannya adalah kesulitan dalam melakukan pertukaran kunci.
Bayangkan bila Alice ingin berkomunikasi dengan Bob dengan kriptografi simetris. Sebelum bisa berhubungan, keduanya harus menyepakati bersama kunci yang akan dipakai. Bagaimana cara menegosiasikan kunci ini? Apakah dikirim melalui sms, email atau telpon? Bukankah sms, email dan telpon bisa disadap?
PKC datang membawa solusi (jadi seperti kampanye), yaitu dengan penggunaan dua macam kunci, yaitu publik dan private. Jadi Alice dan Bob masing-masing harus sudah mempunyai kunci public dan private. Kunci public untuk diberikan pada orang lain (bukan kunci rahasia), dan kunci private harus dirahasiakan. Bila Alice ingin mengirim pesan ke Bob, maka Alice harus meng-enkrip pesannya dengan kunci publik milik Bob. Untuk membaca pesan Alice, Bob bisa men-dekripnya dengan kunci private Bob sendiri. Jadi ingat, bahwa kunci untuk enkripsi dan dekripsi selalu berlawanan. Lawan dari kunci publik adalah kunci private, lawan dari kunci private adalah kunci publik.
• Bila pesan di-enkrip dengan kunci publik, maka dekrip-nya dengan kunci private: Artinya hanya bisa dibuka oleh pemilik kunci private.
• Bila pesan di-enkrip dengan kunci private, maka dekrip-nya dengan kunci public: Artinya semua orang bisa men-dekrip.
Apa perlunya meng-enkrip pesan dengan kunci private? Karena semua orang bisa membacanya. Kalau enkripsi dengan kunci publik tujuannya untuk kerahasiaan (Confidentiality), maka enkripsi dengan kunci private tujuannya untuk Authentication: Memastikan siapa pembuat pesan.
D. Man-in-the-Middle (MITM) Problem
PKC ternyata juga tidak terbebas dari masalah. Bayangkan bila Alice ingin mengirim pesan ke Bob. Charlie sebagai orang ke-3 ingin mendengarkan pesan dari Alice ke Bob. Berikut skenario tipu muslihat Charlie:
1. Sebelum bisa mengirim pesan rahasia. Alice meminta Bob untuk mengirimkan kunci publiknya.
2. Bob mengirim kunci publiknya ke Alice.
3. Sebelum tiba di Alice, kunci publik Bob dicatat Charlie dan diganti dengan kunci publiknya sendiri, lalu diteruskan ke Alice.
4. Alice tertipu, mengira kunci publik yang diterimanya adalah kunci publik Bob, padahal itu milik Charlie.
5. Alice mengenkrip pesannya dengan kunci publik Charlie (bukannya Bob), dan mengirimkannya ke Bob.
6. Sebelum tiba di Bob, pesan Alice di-dekrip oleh Charlie dengan kunci private Charlie (karena enkripnya dengan kunci publik Charlie).
7. Agar Bob tidak curiga, pesan yang telah di-dekrip itu, dienkrip lagi dengan kunci publik Bob yang sebelumnya sudah dicatat lalu dikirim ke Bob.
8. Bob men-dekrip pesan itu dengan kunci private-nya, dan pesan itu dibaca oleh Bob seperti tidak terjadi apa-apa.
Dalam skenario tersebut, Charlie telah sukses berperan sebagai Man-in-the-Middle yang menyadap pesan dari Alice ke Bob tanpa disadari keduanya.
Jadi mirip ayam dan telur juga kan? Untuk mendapatkan kunci publik harus memastikan identitas pembuat pesan, sedangkan untuk memastikan identitas pembuat pesan harus tahu kunci publik.
E. Solusi Mendapatkan Kunci Publik
Kita sudah melihat bahwa PKC juga memiliki kelemahan terhadap serangan mitm. Agar serangan mitm tidak terjadi dibutuhkan mekanisme untuk mendapatkan publik key yang benar.
Untuk memecahkan masalah ayam dan telur dalam PKC, dibutuhkan bantuan pihak ke-3 sebagai pihak penjamin yang kunci publiknya telah dikenal sebelumnya.
Mari kita buat ilustrasinya pengembangan dari kasus mitm oleh Charlie sebelumnya, anggaplah pihak penjamin itu adalah Dedy dengan kunci publik yang telah dikenal sebelumnya oleh Alice.
1. Ketika Alice ingin mengetahui kunci publik Bob, maka Bob sebelumnya harus meminta Dedy untuk membuat surat jaminan yang berisi kunci publik Bob dan pernyataan bahwa Bob adalah orang baik dan rajin menabung.
2. Kemudian surat itu di-enkrip dengan kunci private Dedy untuk memastikan bahwa surat itu benar dibuat oleh Dedy.
3. Bila Alice bertanya pada Bob, “Hey Bob tolong kirim kunci publikmu, aku ada pesan rahasia untukmu”. Maka Bob akan mengirimkan surat jaminan dari Dedy pada Alice.
4. Ketika surat jaminan yang dikirim Bob tiba di Alice. Alice bisa menguji identitas pembuat surat itu dengan cara men-dekrip dengan kunci publik Dedy yang sudah dikenalnya.
5. Bila berhasil di-dekrip, maka surat jaminan itu benar dibuat oleh Dedy. Di dalam surat jaminan itu tertera juga kunci publik Bob. Kini Alice siap mengirim pesan rahasia pada Bob.
Bagaimana dengan Charlie? Bila Charlie nekat mengganti surat jaminan Dedy dengan surat jaminan yang dibuatnya sendiri lalu mengirimnya ke Alice. Maka Alice dengan mudah mengetahui bahwa surat ini palsu, karena tidak bisa didekrip dengan kunci publik Dedy, artinya surat jaminan ini bukan dibuat oleh Dedy.
Why We Need Authentication
Mungkin ada yang bingung sebenarnya untuk apa sih otentikasi server itu? Bukankah kalau kita buka yahoo.com, pasti yang menjawab adalah servernya yahoo, bukan servernya google. Kan tidak mungkin bisa tertukar begitu. Benarkah tidak mungkin tertukar?
Ketika kita mengakses situs, yang kita tulis di address bar browser biasanya adalah domain name, misalkan yahoo.com. Selanjutnya browser akan meminta DNS untuk menerjemahkan yahoo.com menjadi IP address. Baru kemudian browser bisa berkomunikasi dengan server.
Nah, proses pengubahan dari domain name ke IP address ini yang menjadi celah yang memungkinkan seseorang tersesat ke server yang salah. Dengan teknik ARP poisoning, DNS cache poisoning, atau proses routing yang sengaja disesatkan, seseorang bisa saja bukan mengakses server yang benar.
Untuk itulah kita perlu Authentication.
Authentication: Who are you speaking with.
Mari kita bahas bagaimana https menjamin authentication. Sebelum berkomunikasi dengan server, browser mensyaratkan server untuk meng-otentikasi dirinya, menunjukkan bukti identitasnya. Bukti identitas ini berbentu sertifikat yang ditanda-tangani (digital signature) oleh penjamin yang disebut Certificate Authority, mirip dengan ilustrasi Dedy sebagai penjamin Bob di atas. Dalam sertifikat tersebut tertera antara lain: nama perusahaan, alamat web, dan kunci publik.
Ketika browse menghubungi server, untuk menunjukkan identitas dan memberikan kunci publiknya, server akan mengirimkan sertifikatnya. Kemudian browser akan memverifikasi apakah sertifikat itu ditanda-tangani oleh penjamin (CA) yang trusted (browser memiliki daftar trusted CA). Jika tanda tangan digital CA pada sertifikat itu valid, maka dijamin sertifikat itu benar dibuat oleh CA. Selain itu browse juga akan memeriksa tanggal expired sertifikatnya dan membandingkan alamat web yang ada di sertifikat dengan server yang sedang dihubungi. Jika semuanya valid, browser akan mengambil kunci publik server yang tertera pada sertifikat.
Dengan kunci publik server di tangan, browser akan mencoba melakukan komunikasi dengan mengirimkan pesan ter-enkripsi. Bila server bisa menjawab pesan ini, maka server itu pasti punya kunci private, dengan kata lain serve itu pasti benar-benar pemilik kunci publik yang tertera di sertifikat.
Dengan cara ini browser akan yakin sedang terhubung dengan server yang benar.
Sebenarnya https bukanlah satu protokol, tapi kumpulan protokol (dalam hal ini saja banyak yang salah paham) yang diberi nama HTTPS. Kumpulan protokol yang membentuk https adalah http yang ditumpangkan di atas SSL (Secure Socket Layer) atau TLS (Transport Layer Security). Jadi kalau dalam layer posisinya dari bawah ke atas adalah TCP -> SSL/TLS -> HTTP. SSL dan TLS adalah protokol yang secure dalam artian seluruh data yang dikirim dan diterima dalam keadaan ter-enkrip. Sedangkan http adalah protokol yang tidak secure karena datanya telanjang. Perkawinan antara http dan (SSL atau TLS) menghasilkan keturunan yang lebih unggul dari kedua orang tuanya, yang disebut https.
Mari kita lihat interaksi yang terjadi antar protokol tersebut. Bayangkan anda sedang membuka halaman https, dan browser anda sudah terhubung dengan web server dalam mode secure (biasanya muncul tanda gembok di status bar). Ketika anda meng-klik sebuah link, yang terjadi adalah browser mengirimkan request GET dalam protokol HTTP (tidak ter-enkrip). Request GET ini diserahkan pada layer SSL/TLS untuk di-enkrip. Hasil enkripsi request GET ini kemudian diserahkan pada layer TCP untuk dikirim ke tujuan (server web).
F. Kombinasi Symmetric dan Asymmetric Cryptography
Dalam https komunikasi yang terjadi semua ter-enkripsi. Seperti yang sudah saya jelaskan di awal, masing-masing jenis enkripsi memiliki keunggulan dan kelemahan. Keunggulan kriptografi simetris adalah kecepatannya yang tinggi. Sedangkan keunggulan kriptografi asimetris adalah kemudahan dalam pertukaran kunci.
Oleh karena itu https memadukan kedua jenis enkripsi ini. Pada tahap awal komunikasi, client dan server berkomunikasi dengan menggunakan kriptografi asimetris. Enkripsi ini hanya ditujukan untuk menyepakati dan saling bertukar kunci rahasia yang akan dipakai dengan kriptografi simetris. Jadi pertukaran kunci rahasia dilakukan dalam keadaan ter-enkrip dengan kriptografi asimetris.
Setelah kedua pihak memegang kunci rahasia yang sama, komunikasi selanjutnya dilakukan dengan kriptografi simetris karena lebih murah dan cepat.
G. Yang Tidak Dijamin HTTPS
SSL hanya menjamin authentication dan confidentiality saja. Padahal masih banyak attack yang mengancam aplikasi web, antara lain SQL Injection, XSS, CSRF, Denial of Service, Brute-Force-Attack. Ya benar, semua serangan terhadap aplikasi web selain sniffing dan mitm bisa dilakukan tanpa hambatan.
Selain itu kerahasiaan data hanya berlaku di perjalanan antara client hingga server. Sedangkan di dalam komputer client atau server itu sendiri, data memungkinkan untuk disadap dengan penyadapan di level sistem operasi.
Hebatnya lagi, karena komunikasi antara client dan server ter-enkrip, maka IDS (Intrusion Detection System) tidak berguna. IDS bekerja dengan cara meng-inspeksi paket yang masuk (persis seperti sniffer). Bila paket mengandung pattern yang mencurigakan, maka IDS akan membunyikan alarm. Bila komunikasi antara client dan server ter-enkrip, maka IDS tidak bisa melihat isi paket, apakah mengandung pattern yang berbahaya atau tidak.
Ketika request GET yang ter-enkrip ini sampai di tempat tujuan (server web). Pertama paket akan di-handle oleh layer TCP. Kemudian paket itu diserahkan pada layer SSL/TLS untuk di-dekrip. Hasilnya adalah paket dalam format HTTP tidak ter-enkrip. Baru kemudian paket HTTP ini diserahkan pada yang berhak, yaitu server web (misal:Apache). Setelah Apache selesai menjawab, dia akan mengirimkan balasan request GET tersebut dalam bentuk paket HTTP. Paket ini akan di-enkrip dulu oleh layer SSL/TLS sebelum diserahkan pada layer TCP dan dikirim ke client (browser yang mengirimkan request GET semula).
SSL menjamin kerahasiaan komunikasi end-to-end, artinya mulai dari ujung server hingga ujung client. Tidak ada satu pun server atau komputer yang menjadi perantara antara client hingga server bisa membaca isinya.
Pada percobaan ini saya akan menggunakan SSL untuk www.ria.com saya. dalam tutorial ini ria.com adalah domain saya sendiri ,ini akan menghasilkan peringatan browser saat Anda akses https: / / www.ria.com dan bagaimana untuk mendapatkan sertifikat dari otoritas sertifikat terpercaya (CA) seperti Verisign, Thawte, Comodo, dll - dengan sertifikat dari CA yang terpercaya, pengunjung Anda tidak akan melihat peringatan apapun browser, seperti halnya dengan diri menandatangani sertifikat.
Hal ini penting untuk mengetahui bahwa Anda dapat memiliki hanya satu SSL per alamat IP - jika Anda ingin meng-host beberapa vhost SSL, Anda perlu beberapa alamat IP!
Langkah pertama adalah mengaktifkan SSL dengan cara memastikan login sebagai root di ubuntu.
# sudo su
Untuk mengaktifkan modul apache SSL digunakan:
# a2enmod ssl
Setelah itu merestart engan cara
# /etc/init.d/apache2 restart
Setelah di restart apache harus mengetahui pada port 443 yang bias digunakan untuk konfigurasi HTTPS seperti langkah dibawah:
# netstat -tap | grep https
root@server1:~# netstat -tap | grep https
tcp6 0 0 [::]:https [::]:* LISTEN 1238/apache2
root@server1:~#
Kemudian menSetting Up The Virtual host dengan cara untuk menciptakan www.ria.com virtual host dengan dokumen root / var / www / www.ria.com. :
# mkdir /var/www/www.ria.com
Apache dilengkapi dengan virtual host default SSL konfigurasi di dalam file / etc/apache2/sites-available/default-ssl. Saya menggunakan file tersebut sebagai template untuk virtual host www.ria.com
# cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/www.ria.com-ssl
Dan kemudian membuka template /etc/apache2/sites-available/www.ria.com-ssl dengan cara:
# vi /etc/apache2/sites-available/www.ria.com-ssl
Pastikan Anda menggunakan alamat IP yang benar pada baris xxx.xxx.xxx.xxx:443>
Seperti yang Anda lihat, Vhost default SSL ini menggunakan sertifikat snakeoil.
ServerAdmin webmaster@ria.com
ServerName www.ria.com:443
DocumentRoot /var/www/www.ria.com
Options FollowSymLinks
AllowOverride None
Seperti yang kita lihat, virtual host default ini menggunakan sertifikat snakeoil yang ditandatangani dengan Ubuntu:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Setelah itu Sekarang menonaktifkan virtual host default SSL (jika diaktifkan), mengaktifkan virtual host www.ria.com dan reload apache seperti langkah-langkah dibawah ini:
# a2dissite default-ssl
# a2ensite www.ria.com-ssl
# /etc/init.d/apache2 reload
Langkah terakhir adalah membuka browser dan pergi ke virtual host baru SSL anda ( https: / / www.ria.com dalam kasus ini). Karena kita menggunakan sertifikat default Ubuntu yang ditandatangani, kita harus mendapatkan peringatan bahwa sambungan untrusted (untuk menggunakan situs web saja, klik pada Saya Memahami Risiko dan ikuti petunjuk pada browser Anda) maka akan tampil halaman HTTPS seperti yang dibawah ini:
Referensi :
1. http://id.wikipedia.org/wiki/Hypertext_markup_language
2. http://www.ittelkom.ac.id/library/index.php?view=article&catid=10%3Ajaringan&id=406%3A-web-server-&option=com_content&Itemid=15
3. http://aminudin.net/?p=243
4. http://kubaat.wordpress.com/2009/10/18/membuat-virtual-hosting-di-ubuntu/
5. http://www.howtoforge.com/how-to-set-up-an-ssl-vhost-under-apache2-on-ubuntu 9.10-debian-lenny
6. http://id.wikipedia.org/wiki/Transport_Layer_Security
7. http://www.ilmuhacking.com/cryptography/understanding-https/
.jpg)
Posting Komentar