Konfigurasi Website Dengan HTTPS Menggunakan Sertifikat SSL Gratis

Konfigurasi Website Dengan HTTPS Menggunakan Sertifikat SSL Gratis

Saya baru saja mengaktifkan HTTPS di beberapa website yang saya kelola, kemudian sesuai dengan judul artikel ini, semuanya saya dapatkan secara gratis dengan sedikit konfigurasi di nginx yang berjalan pada mesin Ubuntu 16.04. Kok baru sekarang? Iya, selain karena prokrastinasi juga karena ingin mengimplementasikan HTTP/2, dimana syarat menggunakan HTTP/2 adalah HTTPS.

Dulu, website yang menggunakan protokol HTTPS  masih terbatas pada website yang menangani transaksi sensitif, misalnya seperti Internet Banking atau E-Commerce. Hal ini wajar, karena pengguna (user) dari kedua website itu akan mengirimkan informasi sensitif yang berhubungan dengan keuangan, jadi perlu sesuatu yang akan mengamankan informasi di antara keduanya.

Tapi sebelumnya, saya mau coba untuk meluruskan sedikit salah kaprah mengenai protokol HTTPS. Saya sering mendapatkan pertanyaan mengenai kegunaan HTTPS yang dianggap akan mengamankan website dari serangan hacker, sehingga jika websitenya menggunakan HTTPS dijamin aman dari hacking. Jawaban saya: Benar, tapi kurang tepat.

Pertama, HTTPS pada website dapat aktif jika memiliki sertifikat SSL. Sertifikat ini akan menjamin bahwa semua transaksi dari pengguna menuju ke server dan sebaliknya akan aman dari penyadapan. SSL akan melakukan enkripsi data yang melewati jalur HTTPS dengan tingkatan tertentu, kemudian akan memberikan jaminan apabila datanya berhasil diintip oleh hacker, maka si pemilik website akan mendapatkan kompensasi yang nilainya cukup besar dari penjual SSL.

Kedua, HTTPS itu justru lebih mengamankan pengguna websitenya supaya merasa aman dan terlindungi ketika bertransaksi di website. Bagaimanapun juga website itu hanyalah sebuah program yang dibuat dengan bahasa pemrograman dan dijalankan pada mesin yang tersambung ke Internet. Semuanya dilakukan oleh mesin secara otomatis dan dibuat secanggih mungkin supaya dapat melayani manusia. Maka, perlu ditambahkan semacam penjamin bahwa siapapun yang bertransaksi dengan website itu, dijamin aman dan bisa dipercaya.

Jadi kesimpulannya, benar bahwa HTTPS merupakan salah satu metode untuk menghalau hacker, namun kurang tepat jika HTTPS akan menjamin websitenya tidak terkena serangan hacking, karena HTTPS dibuat bukan untuk melindungi website, melainkan untuk melindungi penggunanya.

Oke, bagaimana cara mengaktifkan HTTPS?

Yang jelas harus memiliki sertifikat SSL. Dahulu kala, sertifikat SSL hanya bisa didapatkan dengan cara membeli dan akan diperpanjang setiap tahunnya. Harganya bervariasi, tergantung jenis SSL yang akan dibeli dan tergantung tempat belinya juga. Penyedia sertifikat SSL ini cukup banyak di Internet dan menawarkan berbagai fitur dan harga. Saya pernah membeli Comodo SSL untuk salah satu klien saya, harganya termasuk murah jika dibandingkan dengan merk lainnya.

Selain bisa membeli di masing-masing penyedia sertifikat SSL, saya bisa juga membelinya di perusahaan hosting. Biasanya perusahaan hosting ini telah berafiliasi dengan penjual sertifikat SSL untuk bisa menawarkan ke membernya dengan harga spesial. Keuntungan lainnya, saya tidak perlu memikirkan cara instalasi karena semuanya sudah diurus oleh pihak hosting.

Bagaimana mendapatkan SSL gratis?

Screen Shot 2017 08 11 at 08.19.27

Tersebutlah Let’s Encrypt, sebuah organisasi nirlaba yang didukung oleh Internet Security Research Group (ISRG) untuk menyediakan sertifikat SSL secara gratis bagi orang yang ingin websitenya bisa menggunakan HTTPS. Cukup bermodal domain dan sedikit pengetahuan mengenai Linux saja.

Meskipun demikian hingga tulisan ini dibuat, Let’s Encrypt belum mendukung wildcard domain. Artinya, jika Anda memiliki domain utama dan subdomain, maka Anda harus membuat sertifikat SSL sejumlah domain yang akan diaktifkan.

Misalnya domain yogie.id saya ini punya subdomain lagi, seperti dosen.yogie.id dan engineer.yogie.id. Maka saya harus membuat 3 sertifikat SSL untuk domain utama dan 2 subdomain tadi. Tapi kabarnya, dalam waktu dekat Let’s Encrypt akan meluncurkan fitur wildcard domain, jika ini benar maka nanti saya cukup membuat 1 sertifikat SSL saja.

Bagaimana cara menerbitkan sertifikat SSL dari Let’s Encrypt?

Ini adalah bagian yang menarik, dulu saya pikir untuk mendapatkan sertifkat SSL bakalan ribet, ternyata tidak juga. Namun tutorial ini menyesuaikan dengan environment website saya ya, dimana saya menggunakan layanan cloud dengan sistem operasi Ubuntu 16.04, webserver nginx, dan php-fpm. Untuk Anda yang menggunakan layanan webhosting, saya belum mencobanya, tapi saya yakin banyak sekali tutorialnya di luar sana.

Pertama, pastikan website sudah beroperasional dengan baik di atas mesin Ubuntu 16.04 dan webserver nginx. Kemudian juga memiliki akses ssh yang dapat melakukan perintah “sudo” karena nanti kita akan menginstall beberapa paket di Ubuntu.

Screen Shot 2017 08 11 at 09.06.12

Selanjutnya, saya menginstall layanan Certbot di Ubuntu untuk penerbitan sertifikat SSL dari Let’s Encrypt. Certbot adalah program yang dirancang oleh Electronic Frontier Fondation (EFF) yang mempermudah proses integrasi sertifikat SSL dari Let’s Encrypt di layanan web server.

Setelah terinstall, saya cukup menjalankan Certbot dan mengikuti alur yang sudah tersedia. Oh iya, secara default Certbot akan menggunakan kunci 2048 bit untuk membuat sertifikat SSL. Saya meningkatkan kuncinya menjadi 4096 bit dengan alasan supaya lebih keren saja, tidak ada maksud apa-apa untuk pembuatan itu. Caranya juga mudah, cukup mengetikkan perintah berikut pada saat menjalankan Certbot.

sudo certbot --nginx --rsa-key-size 4096 -d yogie.id

Dalam waktu singkat, website yogie.id telah aktif HTTPS. Prosesnya hanya berlangsung beberapa detik saja dan sudah termasuk dengan redirect port dari 80 (http) ke 443 (https).

Pada artikel berikutnya, saya akan tuliskan bagaimana cara mengoptimasi settingan di atas, misalnya mengatur parameter Diffie-Hellman, auto-renewal pada sertifikat SSL, mengaktifkan HSTS dan HTTP/2.

Leave a Reply

Your email address will not be published. Required fields are marked *