Salah satu kebutuhan web di zaman yang serba tidak aman ini adalah soal keamanan web. Hal yang bisa dilakukan seorang web developer untuk melayani kebutuhan ini adalah dengan cara menanamkan sertifikat SSL pada protokol HTTP, sehingga outputnya berupa protokol HTTPS yang lebih aman.

Bila dulu hampir semua sertifikat SSL berbayar, kini ada alternatif sertifikat SSL yang sifatnya gratis bernama Let’s Encrypt. Sebagai informasi, harga kisaran SSL berbayar saat ini paling murah dari kisaran puluhan ribu sampai ratusan ribu untuk masa kadaluarsa selama satu tahun. Ini menjadi masalah kalau budget untuk mengelola web terbatas, sementara di sisi yang lain kita masih harus membayar perpanjangan domain dan hosting.

Let’s Encrypt mencoba menjawab tantangan ini demi menciptakan lingkungan internet yang sehat, aman, dan sentosa. Baik secara budgeting maupun penggunaan. Tujuan mulia dari proyek ini adalah membuat koneksi terenkripsi ke server seluas-luasnya untuk masyarakat, yaitu dengan cara memotong rantai konfigurasi sertifikat menjadi lebih mudah, menghilangkan fungsi pembayaran, sekaligus tanpa perlu melakukan validasi email.

Let’s Encrypt masih berusia seumur jagung, karena baru dirilis pada tahun 2014. Proyek ini awalnya diinisiasi oleh konsorsium ISRG (Internet Security Research Group). Beberapa sponsor lain yang turut mendukung Let’s Encrypt adalah Electronic Frontier Foundation (EFF), the Mozilla Foundation, OVH, Cisco Systems, Facebook, Google Chrome, Internet Society, dan lain-lain.

Tak seperti sertifikat SSL lain yang mempunyai masa renewal tiap satu tahun, Let’s Encrypt memiliki batas renewal hingga 90 hari saja atau kurang lebih 3 bulan. Jadi, jika masa perpanjangan tiba, maka user diminta untuk melakukan pembangkitan ulang (generate) kunci atau key dari sertifikat ini.

Sebagian besar control panel web admin versi terbaru (cPanel, Plesk Panel, dsb.) biasanya sudah menyediakan menu khusus untuk pemasangan sertifikat ini. Cara menginstalnya pun cukup mudah, hanya dengan menekan tombol Let’s Encrypt, kemudian ikuti step-step berikutnya. Dalam sekejap, sertifikat SSL akan segera terpasang otomatis.

Beberapa waktu yang lalu saya mendapatkan kesempatan untuk menginstal sertifikat Let’s Encrypt untuk server Nginx yang terpasang pada CentOS 7. Berhubung server yang saya tangani ternyata tidak dilengkapi dengan control panel, maka sertifikat tersebut harus dipasang melalui perintah-perintah yang ada di terminal.

Berikut langkah-langkahnya:

A. Persiapan

  1. Sebelum mulai menginstal Let’s Encrypt pada CentOS 7 menggunakan klien Certbot, kita harus memiliki akun non-root pada server dengan hak akses sudo.
  2. Pastikan domain yang ingin kita pasang SSL mengarah ke server dengan benar.

B. Menginstal Certboot Client

Untuk menginstal Certbot client, dibutuhkan EPEL repository, ketik perintah:

sudo yum install epel-release

Instal Certbot client dengan mengeksekusi perintah berikut:

sudo yum install httpd mod_ssl python-certbot-nginx

Untuk memastikan apakah Certbot sudah terinstal, cek dengan perintah berikut. Jika berhasil, maka akan muncul informasi versi Certbot yang sudah terpasang.

certbot --version

C. Menginstal Let’s Encrypt pada Server Nginx

Let’s Encrypt melakukan validasi domain yang kuat melalui kepemilikan domain. Setelah verifikasi berhasil, sistem akan mengeluarkan sertifikat. Di bawah ini contoh perintah untuk memasang sertifikat untuk domain contohdomain.com. Ganti contohdomain.com sesuai dengan kebutuhan Anda.

sudo certbot --nginx -d contohdomain.com -d www.contohdomain.com

Jika Anda baru pertama kali memasang sertifikat, maka Certbot akan meminta Anda untuk memasukkan alamat email dan menyetujui syarat serta ketentuan yang berlaku. Setelah langkah-langkah tersebut diikuti, Certbot akan meminta Anda untuk mengonfigurasi pengaturan HTTPS. Berikut contoh tampilan untuk konfigurasi HTTPS yang dimaksud, pilih nomor 1 atau 2. Saya lebih suka menggunakan opsi nomor 2.

Output
Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

D. Membangkitkan Parameter Diffie-Hellman

Untuk saling bertukar kunci kriptografi secara aman pada saluran komunikasi yang tidak aman, perlu menggunakan metode pertukaran kunci Diffie-Hellman (DH). Perintah berikut akan menghasilkan parameter D-H yang kuat, yang mana akan menghasilkan file yang berisi kunci kriptografi dhparam.pem.

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Langkah selanjutnya adalah melakukan modifikasi file konfigurasi server Nginx:

sudo nano /etc/nginx/nginx.conf

Tambahkan baris kode berikut di dalam server block Nginx:

ssl_dhparam /etc/ssl/certs/dhparam.pem;

Untuk memastikan server block berjalan dengan baik, gunakan perintah berikut:

sudo nginx -t

Bila tidak ada masalah, sekarang restart server dengan perintah sbb:

sudo systemctl reload nginx

Cek domain Anda dengan cara merefresh halaman web pada browser Anda. Jika di sebelah kiri alamat URL muncul ikon gembok, maka Anda sudah berhasil menginstal sertifikat SSL ini.

E. Mengaktifkan Autorenewal Let’s Encrypt

Bagian ini sebetulnya bersifat opsional. Karena Let’s Encrypt akan selalu minta renewal setiap 90 hari sekali, maka Anda cukup mengetikkan perintah berikut setiap kali ingin melakukan renewal.

sudo certbot renew

Nah, agar Anda tidak perlu repot melakukan proses ini terus menerus, Anda bisa mengotomatisasikan proses tersebut dengan memodifikasi cronjob (proses otomatisasi yang dilakukan mesin, semacam task scheduler).

sudo crontab -e

Tambahkan baris berikut ini di bagian paling bawah isi file tersebut:

0 */12 * * * /usr/bin/certbot renew >> /var/log/le-renew.log

Semoga bermanfaat!

Komentar