Website tanpa HTTPS ditandai Not Secure oleh semua browser besar, tidak bisa memakai HTTP/2 di browser, dan membuat data login serta isi formulir bisa dibaca siapa pun yang berada di jaringan yang sama. Sejak Let's Encrypt hadir pada 2015, sertifikat SSL tidak perlu lagi dibeli, dan kini ratusan juta website memakainya. Tantangannya sekarang bukan lagi biaya, tetapi perawatannya: masa berlaku sertifikat makin pendek, Let's Encrypt berhenti mengirim email pengingat sejak 2025, dan perpanjangan yang gagal tanpa ketahuan bisa membuat seluruh website tidak bisa diakses. Artikel ini membahas cara memasangnya dengan benar dan memastikan sertifikat terus diperpanjang.
Apa Sebenarnya Fungsi Sertifikat SSL
Nama SSL masih dipakai sampai sekarang, padahal protokol yang berjalan adalah TLS, biasanya versi 1.2 atau 1.3. Sertifikat punya dua tugas. Pertama, membuat browser dan server bisa menyepakati kunci enkripsi, sehingga tidak ada pihak di tengah yang bisa membaca atau mengubah trafik. Kedua, membuktikan bahwa server itu memang milik domain yang tertulis di address bar, karena certificate authority (CA) yang dipercaya browser sudah memeriksa bahwa pemohon benar-benar menguasai domain tersebut.
Di luar urusan keamanan, HTTPS sudah jadi syarat dasar. Banyak fitur browser yang diblokir di HTTP biasa, seperti lokasi, service worker, dan akses kamera. Payment gateway dan app store mewajibkan HTTPS untuk callback dan API. Mesin pencari memakainya sebagai salah satu sinyal peringkat. Dan untuk aplikasi yang mengolah data pribadi, enkripsi saat data dikirim adalah salah satu pengamanan paling dasar yang diharapkan oleh UU Pelindungan Data Pribadi.
Gratis atau Berbayar, Apa Bedanya?
| Jenis | Yang diperiksa CA | Contoh penerbit | Kekuatan enkripsi |
|---|---|---|---|
| DV (Domain Validated) | Hanya bahwa Anda menguasai domain | Let's Encrypt, ZeroSSL, Google Trust Services, dan produk DV berbayar | Sama dengan OV dan EV |
| OV (Organization Validated) | Domain sekaligus perusahaan terdaftar di baliknya | CA berbayar seperti DigiCert, Sectigo, dan GlobalSign | Sama dengan DV |
| EV (Extended Validation) | Pemeriksaan badan hukum yang lebih ketat | CA berbayar | Sama dengan DV. Tanda hijau khusus di browser sudah lama dihapus |
Dari sisi perlindungan trafik, sertifikat DV gratis dan sertifikat EV yang mahal itu setara. Yang Anda bayar adalah pemeriksaan identitas, garansi, dan dukungan dari CA. Sertifikat berbayar masih masuk akal kalau tender, mitra perbankan, atau kebijakan internal secara tegas meminta OV atau EV, atau kalau kontrak dukungan memang penting bagi Anda. Tapi sertifikat berbayar pun tetap butuh otomasi: sejak 15 Maret 2026 masa berlaku maksimum sertifikat publik adalah 200 hari, jadi sertifikat berbayar pun harus diganti minimal dua kali setahun.
Cara Let's Encrypt Memverifikasi Domain
Let's Encrypt tidak punya formulir web dan tidak ada pemeriksaan manual oleh manusia. Semuanya berjalan lewat protokol ACME: sebuah client di server Anda meminta sertifikat, Let's Encrypt memberi tantangan (challenge), lalu client membuktikan bahwa ia menguasai domain dengan menjawab tantangan itu.
| Challenge | Cara membuktikan | Cocok untuk | Batasan |
|---|---|---|---|
| HTTP-01 | Menyediakan file token di /.well-known/acme-challenge/ lewat port 80 | Sebagian besar server tunggal dengan IP publik | Port 80 harus bisa diakses dari internet. Tidak bisa untuk sertifikat wildcard |
| DNS-01 | Membuat record TXT _acme-challenge di domain | Sertifikat wildcard, server di balik firewall, atau banyak server yang memakai satu sertifikat | Butuh akses API ke penyedia DNS supaya bisa otomatis |
| TLS-ALPN-01 | Menjawab handshake TLS khusus di port 443 | Reverse proxy seperti Caddy dan Traefik saat port 80 ditutup | Hanya didukung sebagian client |
Yang Berubah Sepanjang 2025 dan 2026
Banyak panduan di internet ditulis sebelum perubahan-perubahan ini. Kalau server Anda disetel beberapa tahun lalu, cocokkan dengan daftar berikut.
- Tidak ada lagi email pengingat. Let's Encrypt menghentikan layanan ini pada Juni 2025. Kalau perpanjangan gagal, tidak akan ada yang memberi tahu kecuali Anda punya monitoring sendiri.
- OCSP sudah tidak ada. Let's Encrypt mematikan layanan OCSP pada Agustus 2025, dan sertifikat baru tidak lagi mencantumkan alamat OCSP. Pengecekan pencabutan sertifikat kini memakai CRL. Konfigurasi Nginx dengan ssl_stapling on akan memunculkan peringatan yang bisa diabaikan, atau baris itu bisa dihapus.
- Tidak ada lagi sertifikat untuk autentikasi client. Fungsi TLS client authentication dihapus dari sertifikat Let's Encrypt pada 2026. Sistem yang memakainya untuk mutual TLS antar server perlu beralih ke CA privat.
- Masa berlaku makin pendek di seluruh industri. Berdasarkan keputusan CA/Browser Forum, masa berlaku maksimum sertifikat publik turun menjadi 200 hari pada 15 Maret 2026, akan menjadi 100 hari pada 15 Maret 2027, dan 47 hari pada 15 Maret 2029.
- Let's Encrypt bergerak lebih cepat dari industri. Sertifikat default-nya akan berubah dari 90 menjadi 64 hari pada 10 Februari 2027, lalu 45 hari pada 16 Februari 2028. Profil opsional bernama tlsserver sudah menerbitkan sertifikat 45 hari sejak 13 Mei 2026.
- Sertifikat 6 hari dan sertifikat untuk alamat IP sudah tersedia untuk umum sejak Januari 2026, lewat profil shortlived.
- Root dan intermediate baru. Sertifikat kini diterbitkan dari hierarki Generation Y, jadi Anda mungkin melihat intermediate bernama YE2 atau YR2, bukan E5 atau R10 seperti dulu. Jangan pernah menulis intermediate tertentu secara permanen di konfigurasi.
- Metode validasi DNS baru, DNS-PERSIST-01, sudah diumumkan. Dengan metode ini cukup satu record TXT permanen, tanpa perlu mengubah DNS setiap kali perpanjangan. Pastikan ACME client Anda dan Let's Encrypt production sudah mendukungnya sebelum mengandalkannya.
Benang merahnya sederhana. Setup apa pun yang bergantung pada orang yang harus ingat memperpanjang, atau pada cron job yang dipatok memperpanjang setiap 60 hari, akan bermasalah dalam satu sampai dua tahun ke depan.
Memilih ACME Client
| Tool | Cocok untuk | Catatan |
|---|---|---|
| Certbot | Server Ubuntu atau Debian dengan Nginx atau Apache | Client dengan dokumentasi paling banyak. Plugin Nginx dan Apache-nya mengubah konfigurasi secara otomatis. Versi 4.1 ke atas mendukung ACME Renewal Information (ARI) |
| acme.sh | Server yang tidak ingin memasang Python, router, dan sertifikat wildcard lewat berbagai penyedia DNS | Berupa shell script dengan dukungan lebih dari seratus API DNS |
| Caddy | Server baru yang web server-nya masih bisa dipilih | Mengambil dan memperpanjang sertifikat sendiri tanpa tool tambahan |
| Modul ACME Nginx | Pengguna Nginx yang ingin sertifikat dikelola langsung oleh Nginx | Modul resmi ngx_http_acme_module, dipasang lewat paket nginx-module-acme. Masih relatif baru, jadi uji dulu sebelum dipakai di production |
| Traefik | Setup Docker dan Docker Compose | Menerbitkan sertifikat per container berdasarkan label |
| cert-manager | Cluster Kubernetes | Mengelola sertifikat sebagai resource Kubernetes dan memperpanjangnya sebelum habis |
| Control panel hosting | Shared hosting dengan cPanel, Plesk, atau sejenisnya | Biasanya sudah ada opsi Let's Encrypt atau AutoSSL sekali klik |
Memasang Let's Encrypt dengan Certbot di Nginx
Contoh di bawah memakai Ubuntu dan Nginx, kombinasi yang paling sering kami temui di server yang kami kelola. Sebelum mulai, pastikan record A atau AAAA domain sudah mengarah ke server, dan port 80 serta 443 sudah dibuka di firewall maupun security group cloud.
- 1Pasang Certbot. Rekomendasi resminya lewat snap: sudo snap install --classic certbot, lalu sudo ln -s /snap/bin/certbot /usr/bin/certbot. Paket apt dengan python3-certbot-nginx juga bisa dipakai, tetapi versinya sering tertinggal.
- 2Pastikan Nginx sudah punya server block dengan server_name yang benar, misalnya example.com dan www.example.com, dan sudo nginx -t tidak menunjukkan error.
- 3Minta sertifikat: sudo certbot --nginx -d example.com -d www.example.com. Certbot memverifikasi domain lewat HTTP-01, menuliskan baris ssl_certificate ke konfigurasi Nginx, dan bisa menambahkan redirect dari HTTP ke HTTPS.
- 4Uji proses perpanjangan tanpa menerbitkan sertifikat sungguhan: sudo certbot renew --dry-run. Perintah ini memakai server staging, jadi kegagalan tidak dihitung ke rate limit production.
- 5Pastikan timer perpanjangan aktif: systemctl list-timers | grep certbot. Paket snap memasang timer yang berjalan dua kali sehari dan hanya memperpanjang kalau memang sudah waktunya.
- 6Buka website di browser, lalu cek sertifikat dari terminal: echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -dates.
Perintah terakhir menampilkan penerbit dan tanggal berlaku sertifikat. Pada sertifikat yang kami cek bulan ini, hasilnya menunjukkan penerbit CN = YE2 dari Let's Encrypt, tanggal notAfter 90 hari setelah diterbitkan, dan tidak ada alamat OCSP di bagian Authority Information Access. Ini sesuai dengan perubahan yang dijelaskan di atas.
Sertifikat Wildcard dan Server Tanpa Port 80
Sertifikat wildcard seperti *.example.com berlaku untuk semua subdomain, cocok untuk aplikasi multi-tenant yang memberi setiap pelanggan subdomain sendiri. Let's Encrypt hanya menerbitkan wildcard lewat DNS-01. Hindari mode DNS manual di Certbot, karena Anda harus menambahkan record TXT dengan tangan setiap kali perpanjangan. Gunakan plugin DNS seperti certbot-dns-cloudflare atau plugin Route 53, atau acme.sh dengan API penyedia DNS Anda. Beri token API izin hanya untuk mengubah record DNS di satu zona itu, dan simpan dengan permission file yang hanya bisa dibaca root.
Pengaturan HTTPS yang Disarankan Setelah Pemasangan
- Arahkan semua trafik HTTP ke HTTPS, tetapi biarkan path /.well-known/acme-challenge/ tetap bisa diakses lewat port 80 kalau Anda memakai HTTP-01.
- Izinkan hanya TLS 1.2 dan TLS 1.3. Versi yang lebih lama sudah dimatikan oleh semua browser modern.
- Pakai fullchain.pem, bukan cert.pem, untuk ssl_certificate. Tanpa sertifikat intermediate, browser biasanya masih jalan, tetapi aplikasi Android, curl, dan callback payment gateway sering gagal.
- Tambahkan HSTS setelah yakin semua subdomain sudah berjalan di HTTPS. Mulai dengan max-age yang pendek, dan tambahkan includeSubDomains serta preload hanya kalau benar-benar yakin, karena preload sulit dibatalkan.
- Hapus baris ssl_stapling untuk sertifikat Let's Encrypt, karena sudah tidak ada OCSP responder yang bisa di-staple.
- Bereskan mixed content: gambar, script, atau panggilan API yang masih memakai http:// akan diblokir atau ditandai oleh browser.
Kesalahan yang Membuat Perpanjangan Gagal
- Port 80 ditutup setelah pemasangan pertama, atau ada aturan redirect yang mengirim path challenge ke tempat lain. Perpanjangan lewat HTTP-01 lalu gagal tanpa suara.
- Sertifikat sudah diperpanjang tetapi Nginx tidak pernah di-reload, sehingga server tetap memakai sertifikat lama sampai kedaluwarsa. Plugin Nginx milik Certbot sudah menangani ini, tetapi certonly dengan webroot butuh deploy hook seperti --deploy-hook "systemctl reload nginx".
- Domain punya record CAA yang hanya mengizinkan CA lain, sehingga Let's Encrypt menolak menerbitkan sertifikat. Tambahkan letsencrypt.org ke record CAA kalau Anda memakainya.
- Mencoba berulang kali ke server production sampai terkena rate limit. Let's Encrypt hanya mengizinkan 5 sertifikat per minggu untuk kumpulan nama domain yang persis sama, dan 5 validasi gagal per domain per jam. Pakai --dry-run atau server staging selama masih bereksperimen.
- Container Docker menyimpan sertifikat di dalam container tanpa volume, sehingga setiap redeploy meminta sertifikat baru dan lama-lama terkena limit.
- Cron job dipatok memperpanjang setiap 60 hari, yang tidak akan cocok untuk sertifikat 64 dan 45 hari. Biarkan client yang menentukan lewat ARI, atau perpanjang di sekitar dua pertiga masa berlaku.
- Beberapa server di belakang load balancer masing-masing meminta sertifikat untuk domain yang sama. Minta di satu tempat saja, atau pakai DNS-01, lalu distribusikan dari sana.
Monitoring Sekarang Jadi Tanggung Jawab Anda
Tanpa email pengingat, sertifikat yang kedaluwarsa biasanya pertama kali diketahui oleh pelanggan. Tambahkan pengecekan masa berlaku sertifikat ke monitoring yang sudah ada. Uptime Kuma, Zabbix, dan sebagian besar layanan uptime bisa memberi peringatan saat sertifikat mendekati kedaluwarsa. Sesuaikan batas peringatan dengan masa berlakunya: untuk sertifikat 90 hari, peringatan di sisa 20 hari cukup wajar, dan untuk sertifikat 45 hari sekitar 10 hari. Kalau peringatan itu muncul, artinya perpanjangan otomatis sudah gagal minimal sekali, jadi perlakukan sebagai insiden, bukan sekadar pengingat.
Uji sederhana untuk setup HTTPS apa pun: kalau semua engineer di tim cuti tiga bulan, apakah sertifikat tetap diperpanjang sendiri, dan apakah ada yang diberi tahu kalau ternyata gagal? Kalau jawabannya tidak, perbaiki itu lebih dulu.
Poin penting
- Sertifikat gratis Let's Encrypt mengenkripsi trafik sama baiknya dengan sertifikat berbayar. Sertifikat berbayar diperlukan untuk kebutuhan identitas OV atau EV, garansi, atau dukungan.
- Let's Encrypt tidak lagi mengirim email pengingat dan tidak lagi menjalankan OCSP, jadi monitoring dan konfigurasi dari panduan lama perlu diperbarui.
- Masa berlaku sertifikat makin pendek: maksimum 200 hari sejak Maret 2026, dan default Let's Encrypt menjadi 64 hari pada Februari 2027 lalu 45 hari pada Februari 2028.
- Pakai ACME client yang memperpanjang otomatis dan mendukung ARI, seperti Certbot versi terbaru, acme.sh, Caddy, Traefik, atau cert-manager, dan jangan pernah mengandalkan perpanjangan manual.
- Gunakan DNS-01 dengan plugin API untuk wildcard, pakai fullchain.pem, reload web server setelah perpanjangan, dan pantau sendiri tanggal kedaluwarsanya.


