Cara Mengelola SSL Let's Encrypt dengan Perintah Certbot


Ketika seseorang mengunjungi situs web Anda, browser mereka dan server Anda saling bertukar informasi. Tanpa enkripsi, percakapan ini terjadi dalam teks biasa, artinya siapa pun yang memantau jaringan bisa membaca semuanya: kredensial login, pesan pribadi, informasi pembayaran, semuanya.

Sebuah sertifikat SSL menyelesaikan masalah ini dengan mengaktifkan HTTPS, yang mengenkripsi semua data antara browser dan server Anda. Ikon gembok kecil di bilah alamat browser Anda? Itu menunjukkan bahwa koneksi Anda terenkripsi dan aman.

Selama bertahun-tahun, mendapatkan sertifikat SSL berarti membayar otoritas sertifikat setiap tahun dan melalui proses pengaturan manual yang melelahkan. Lalu Let’s Encrypt hadir dan mengubah segalanya. Ini adalah otoritas sertifikat gratis dan otomatis yang ada untuk satu tujuan: menjadikan koneksi terenkripsi sebagai standar di seluruh web.

Tapi begini: meskipun sertifikat Let’s Encrypt gratis, mereka kedaluwarsa setiap 90 hari. Mengelola perpanjangan secara manual akan menjadi mimpi buruk, itulah sebabnya Certbot ada, yaitu alat baris perintah yang mengotomatiskan seluruh proses memperoleh, memasang, dan memperbarui sertifikat Let’s Encrypt.

Dalam panduan ini, kami akan membahas segala yang perlu Anda ketahui tentang menggunakan Certbot, mulai dari instalasi sertifikat pertama Anda hingga memahami proses pembaruan, semuanya dijelaskan dengan cara yang mudah dimengerti bahkan jika Anda baru memulai dengan server Linux.

Menginstal Certbot di Linux

Proses instalasi certbot sedikit berbeda tergantung distribusi Linux Anda, tetapi secara keseluruhan cukup mudah.

Untuk sistem berbasis Debian, Anda pertama-tama ingin memastikan sistem Anda diperbarui:

sudo apt update
sudo apt upgrade

Kemudian instal Certbot beserta plugin untuk server web Anda, jika Anda menggunakan nginx.

sudo apt install certbot python3-certbot-nginx

Atau jika Anda menjalankan Apache.

sudo apt install certbot python3-certbot-apache

Untuk distribusi berbasis RHEL, prosesnya terlihat serupa tetapi menggunakan dnf sebagai gantinya:

sudo dnf install certbot python3-certbot-nginx    # For Nginx
sudo dnf install certbot python3-certbot-apache   # For Apache

Plugin server web penting karena memungkinkan Certbot secara otomatis mengonfigurasi server Anda untuk HTTPS. Tanpa plugin tersebut, Anda harus mengedit file konfigurasi secara manual, yang merupakan jenis pekerjaan membosankan yang dirancang untuk dihilangkan oleh Certbot.

Mendapatkan Sertifikat SSL Pertama Anda

Setelah Certbot terpasang, mendapatkan sertifikat sangatlah mudah.

Untuk server Nginx, perintahnya terlihat seperti ini:

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

Jika Anda menggunakan Apache, perintahnya hampir sama:

sudo certbot --apache -d example.com -d www.example.com

Ketika Anda menjalankan perintah di atas untuk pertama kalinya, Certbot akan meminta alamat email Anda, yang penting diketahui bahwa meskipun Let’s Encrypt sebelumnya mengirimkan pemberitahuan kedaluwarsa melalui email ini di masa lalu, mereka kini telah menghentikan layanan tersebut untuk meminimalkan penyimpanan data. Oleh karena itu, Anda harus mengandalkan proses pembaruan otomatis yang andal atau mengatur pemantauan pihak ketiga sendiri untuk pemberitahuan kedaluwarsa.

Setelah itu, Certbot melakukan pekerjaannya: berkomunikasi dengan Let’s Encrypt, membuktikan bahwa Anda mengendalikan domain, memperoleh sertifikat, dan mengubah konfigurasi Nginx Anda untuk menggunakan HTTPS.

Memahami Pembaruan Sertifikat SSL

Seperti yang saya sebutkan sebelumnya, sertifikat Let’s Encrypt kedaluwarsa setiap 90 hari, jadi sangat penting untuk mengatur proses pembaruan otomatis. Timer systemd dapat menangani ini dengan memeriksa dua kali sehari untuk setiap sertifikat yang mendekati masa kedaluwarsa. Ketika sertifikat memiliki kurang dari 30 hari tersisa, Certbot secara otomatis memperbaruinya tanpa memerlukan intervensi manual.

Anda dapat menguji proses perpanjangan ini tanpa benar-benar memperpanjang apa pun:

sudo certbot renew --dry-run

Flag --dry-run mensimulasikan proses perpanjangan, yang berguna untuk memastikan semuanya dikonfigurasi dengan benar. Jika perintah berhasil, Anda dapat yakin bahwa perpanjangan otomatis akan bekerja saat waktunya tiba.

Untuk melihat kapan sertifikat Anda kedaluwarsa dan memeriksa status perpanjangannya:

sudo certbot certificates

Anda dapat memeriksa status timer untuk memastikan itu aktif:

sudo systemctl status certbot.timer

Mengelola Beberapa Sertifikat SSL

Saat Anda menambahkan lebih banyak domain atau subdomain ke server Anda, Anda akan memiliki banyak sertifikat, tetapi certbot membuat ini cukup mudah diatur.

Untuk menambahkan domain baru ke sertifikat yang sudah ada:

sudo certbot --nginx -d example.com -d www.example.com -d blog.example.com

Jika Anda ingin memperoleh sertifikat yang sepenuhnya terpisah untuk domain yang berbeda:

sudo certbot --nginx -d another-domain.com -d www.another-domain.com

Setiap sertifikat dikelola secara mandiri, tetapi semua perpanjangan terjadi secara otomatis melalui proses perpanjangan yang sama.

Memperbarui Sertifikat SSL Secara Manual

Meskipun pembaruan otomatis adalah tujuan utama menggunakan Certbot, ada kalanya Anda mungkin ingin memaksa pembaruan secara manual. Mungkin Anda telah membuat perubahan konfigurasi dan ingin mengujinya, atau mungkin Anda sedang memecahkan masalah.

Untuk memperbarui semua sertifikat yang harus diperbarui, jalankan perintah berikut, yang hanya akan memperbarui sertifikat yang masa berlakunya tinggal 30 hari, dan sertifikat yang masih memiliki lebih dari 30 hari tidak akan diperbarui.

sudo certbot renew

Jika Anda perlu memaksa pembaruan tanpa mempedulikan tanggal kedaluwarsa:

sudo certbot renew --force-renewal

Melihat Sertifikat SSL Anda

Terkadang Anda perlu melihat rincian sertifikat yang telah Anda pasang, misalnya nama setiap sertifikat, domain yang dicakupnya, tanggal kedaluwarsa, dan jalur file tempat sertifikat dan kunci privat disimpan.

sudo certbot certificates

File sertifikat yang sebenarnya berada di /etc/letsencrypt/live/, dengan direktori terpisah untuk setiap sertifikat. Di dalamnya, Anda akan menemukan tautan simbolik ke sertifikat sebenarnya, yang diberi versi di direktori arsip.

Mencabut Sertifikat SSL

Jika kunci privat dari sebuah sertifikat pernah dikompromikan, atau jika Anda tidak lagi memerlukan sertifikat tersebut, Anda harus mencabutnya, dan ini langsung memberi tahu browser dan klien lain bahwa sertifikat tersebut tidak boleh lagi dipercaya, bahkan jika sertifikat itu belum kadaluwarsa.

Untuk mencabut sertifikat:

sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem

Anda perlu menentukan jalur ke file sertifikat yang ingin Anda cabut.

sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem --delete-after-revoke

Certbot akan berkomunikasi dengan Let’s Encrypt untuk mencabut sertifikat dan, jika diinginkan, membersihkan file lokal.

Menghapus Sertifikat SSL Tanpa Mencabut

Terkadang Anda ingin menghapus sertifikat dari sistem Anda tanpa mencabutnya. Mungkin Anda telah memindahkan domain ke server lain, atau Anda memperoleh sertifikat secara tidak sengaja dan tidak pernah menggunakannya.

sudo certbot delete --cert-name example.com

Ini menghapus file sertifikat dari sistem Anda tetapi tidak mencabut sertifikat dengan Let's Encrypt. Sertifikat tetap berlaku jika digunakan di tempat lain, tetapi Certbot akan berhenti mengelolanya di server ini.

Memperbaiki Masalah Pembaruan Sertifikat Certbot

Bahkan dengan otomatisasi Certbot, Anda mungkin sesekali mengalami masalah, dan berikut adalah yang paling umum serta cara mengatasinya.

Jika pembaruan sertifikat gagal, periksa bahwa server web Anda berjalan dan dapat diakses dari internet, karena Let’s Encrypt perlu mengakses server Anda pada port 80 atau 443 untuk memverifikasi kepemilikan domain.

Anda dapat memeriksa log pembaruan untuk pesan kesalahan tertentu:

sudo cat /var/log/letsencrypt/letsencrypt.log

Log ini menunjukkan dengan tepat apa yang dicoba oleh Certbot dan di mana gagal, yang biasanya langsung menunjukkan masalahnya.

Jika konfigurasi server web Anda mengalami masalah, Certbot terkadang dapat mengembalikan konfigurasi asli:

sudo certbot --nginx rollback

Ini mengembalikan perubahan yang dibuat oleh Certbot, meskipun jarang dibutuhkan jika Anda menggunakan opsi konfigurasi otomatis.

Memahami Batasan Kecepatan

Let’s Encrypt memiliki batasan tingkat untuk mencegah penyalahgunaan. Untuk penggunaan normal, Anda tidak akan pernah mencapainya, tetapi ada baiknya mengetahui bahwa batasan tersebut ada. Anda dapat meminta hingga 50 sertifikat per domain terdaftar setiap minggu, dan setiap sertifikat dapat mencakup hingga 100 subdomain.

Jika Anda sedang menguji atau belajar, gunakanlah flag --dry-run secara bebas, yang mensimulasikan seluruh proses tanpa benar-benar meminta sertifikat, sehingga tidak menghitung terhadap batasan jumlah permintaan.

sudo certbot renew --dry-run

Menjaga Certbot Tetap Terbarui

Seperti perangkat lunak lainnya, Certbot menerima pembaruan yang memperbaiki bug dan menambahkan fitur, jadi penting untuk menjaga certbot tetap terbarui melalui manajer paket Anda seperti biasa:

sudo apt update
sudo apt upgrade certbot
Melampaui Penggunaan Dasar

Setelah Anda merasa nyaman dengan manajemen sertifikat dasar, Certbot menawarkan opsi lanjutan yang layak untuk dijelajahi. Anda dapat menggunakan validasi DNS sebagai pengganti validasi HTTP, yang memungkinkan Anda mendapatkan sertifikat bahkan untuk server yang tidak dapat diakses secara publik di port 80 atau 443.

Anda dapat mengonfigurasi hook pembaruan kustom untuk menjalankan skrip saat sertifikat diperbarui, berguna untuk me-restart layanan atau memperbarui konfigurasi. Anda bahkan bisa mendapatkan sertifikat wildcard yang mencakup semua subdomain sekaligus.

Tapi untuk sebagian besar kasus penggunaan, perintah sederhana yang telah kita bahas sudah menangani semua yang Anda butuhkan. Certbot mengubah proses yang dulunya kompleks dan rawan kesalahan menjadi beberapa perintah sederhana yang langsung berjalan.