Cara Memasang Let's Encrypt SSL Gratis untuk Website

HTTPS adalah fondasi keamanan website. Tanpa HTTPS, semua data yang dikirim antara pengunjung dan server dalam keadaan terbaca oleh siapa saja. Let's Encrypt adalah Certificate Authority gratis yang memberikan sertifikat SSL/TLS secara otomatis. Artikel ini membahas cara memasangnya di server Debian 13.

Pengertian SSL/TLS

SSL (Secure Sockets Layer) adalah protokol keamanan yang mengenkripsi koneksi antara browser pengguna dan server website. TLS (Transport Layer Security) adalah versi terbaru dari SSL. Ketika website menggunakan HTTPS, semua data yang dikirim dienkripsi sehingga tidak bisa disadap.

Mengapa HTTPS Penting?

  • Keamanan Data: Password, nomor kartu kredit, dan data pribadi terlindungi
  • Kepercayaan Pengunjung: Browser menandikan website HTTPS dengan gembok hijau
  • SEO: Google memberi peringkat lebih tinggi untuk website HTTPS
  • Wajib: Browser modern memperingatkan website HTTP sebagai "Tidak Aman"

Pengertian Let's Encrypt

Let's Encrypt adalah Certificate Authority gratis, otomatis, dan terbuka yang didukung oleh organisasi seperti Mozilla, Cisco, dan EFF. Let's Encrypt memberikan sertifikat SSL yang valid selama 90 hari dan bisa diperbarui otomatis.

Keunggulan Let's Encrypt

  • Gratis: Tidak perlu membayar sepeser pun
  • Otomatis: Proses penerbitan dan perpanjangan sepenuhnya otomatis
  • Terpercaya: Sertifikat dikenali oleh semua browser utama
  • Sederhana: Instalasi hanya memerlukan beberapa perintah

Alat yang Dibutuhkan

  • Server Debian 13 yang sudah memiliki website aktif
  • Domain yang sudah mengarah ke server (lihat artikel DNS)
  • Akses SSH ke server
  • Nginx atau Caddy yang sudah terinstal

Instalasi Certbot

Certbot adalah tool resmi Let's Encrypt untuk mengelola sertifikat SSL.

1. Update Sistem

bash
apt update && apt upgrade -y

2. Instal Certbot

Untuk Nginx:

bash
apt install certbot python3-certbot-nginx -y

Untuk Caddy, Certbot sudah terintegrasi. Cukup aktifkan HTTPS di konfigurasi Caddy.

3. Verifikasi Instalasi

bash
certbot --version

Memasang SSL dengan Certbot (Nginx)

Metode 1: Otomatis via Nginx Plugin

Cara termudah — Certbot akan otomatis mengkonfigurasi Nginx:

bash
certbot --nginx -d masyarakat.id -d www.masyarakat.id

Ikuti instruksi:

  1. Masukkan email untuk notifikasi darurat
  2. Setujui Terms of Service (Y)
  3. Bagikan email dengan EFF? (Y atau N)

Certbot akan otomatis:

  • Mengambil sertifikat SSL
  • Mengkonfigurasi Nginx untuk HTTPS
  • Mengatur redirect HTTP ke HTTPS
  • Mengatur auto-renewal

Metode 2: Manual (standalone mode)

Jika tidak menggunakan Nginx atau ingin konfigurasi manual:

bash
certbot certonly --standalone -d masyarakat.id

Pastikan tidak ada layanan yang menggunakan port 80 sebelum menjalankan perintah.

Metode 3: Webroot mode

Jika Nginx sudah berjalan dan tidak bisa dimatikan:

bash
certbot certonly --webroot -w /var/www/html -d masyarakat.id

Verifikasi Sertifikat SSL

Setelah pemasangan, verifikasi sertifikat:

bash
# Cek tanggal到期
certbot certificates

# Lihat detail sertifikat
openssl s_client -connect masyarakat.id:443 -servername masyarakat.id 2>/dev/null | openssl x509 -noout -dates

Hasil akan menampilkan:

  • Not Before: Tanggal mulai berlaku
  • Not After: Tanggal berakhir (90 hari dari penerbitan)

Konfigurasi Auto-Renewal

Sertifikat Let's Encrypt berlaku 90 hari. Certbot otomatis memperbaruinya, tapi perlu verifikasi.

1. Test Auto-Renewal

bash
certbot renew --dry-run

Jika tidak ada error, auto-renewal berjalan dengan baik.

2. Cek Cron Job

Certbot otomatis menambahkan cron job saat instalasi:

bash
cat /etc/cron.d/certbot

Hasilnya akan seperti:

kode
0 */12 * * * root test -x /usr/bin/certbot -a \! -e /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

Artinya: setiap 12 jam, Certbot memeriksa dan memperbarui sertifikat yang akan berakhir dalam 30 hari.

3. Configurasi Manual Renewal Hook (Opsional)

Agar Nginx reload otomatis setelah perpanjangan:

bash
nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

Isi dengan:

bash
#!/bin/bash
systemctl reload nginx

Buat executable:

bash
chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

Konfigurasi HTTPS untuk Caddy

Caddy sudah memiliki dukungan bawaan untuk Let's Encrypt. Cukup ubah konfigurasi Caddy:

kode
masyarakat.id {
    reverse_proxy localhost:3000
    tls {
        dns cloudflare {env.CF_API_TOKEN}
    }
}

Caddy otomatis:

  • Memesan sertifikat Let's Encrypt
  • Memperbarui otomatis
  • Mengaktifkan HTTPS

Untuk DNS-01 challenge (domain dengan Cloudflare):

bash
apt install caddy-dns-cloudflare

Troubleshooting

1. Error "Challenge failed"

Penyebab: Domain tidak mengarah ke server, atau port 80 diblokir. Solusi:

bash
# Pastikan domain mengarah ke IP server
dig masyarakat.id

# Pastikan port 80 terbuka
ufw status

2. Error "Unable to register an account"

Penyebab: Email tidak valid atau Let's Encrypt rate limit. Solusi: Coba lagi beberapa saat kemudian atau gunakan email yang valid.

3. Error "Permission denied"

Penyebab: Certbot tidak dijalankan sebagai root. Solusi:

bash
sudo certbot --nginx -d masyarakat.id

4. Sertifikat Tidak Otomatis Diperbarui

Penyebab: Cron job hilang atau certbot tidak terinstal. Solusi:

bash
# Cek cron job
cat /etc/crontab

# Reinstall certbot
apt reinstall certbot

# Manual renewal
certbot renew --force-renewal

5. Campuran HTTP dan HTTPS (Mixed Content)

Penyebab: Ada konten yang masih dimuat via HTTP. Solusi: Periksa developer tools browser (F12 → Console), cari sumber yang masih HTTP, dan ubah ke HTTPS.

6. Certificate Chain Incomplete

Penyebab: Sertifikat antara tidak terpasang. Solusi:

bash
# Dengan Nginx, pastikan ssl_certificate mencakup full chain
ssl_certificate /etc/letsencrypt/live/masyarakat.id/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/masyarakat.id/privkey.pem;

Kesimpulan

Let's Encrypt memberikan solusi SSL gratis yang mudah dipasang dan dikelola. Dengan Certbot, proses penerbitan, konfigurasi, dan perpanjangan sertifikat dilakukan sepenuhnya otomatis. HTTPS bukan lagi opsional — ini adalah kebutuhan dasar setiap website modern untuk keamanan, kepercayaan pengunjung, dan peringkat SEO.

Kunci utama:

  • Selalu gunakan auto-renewal dan verifikasi dengan certbot renew --dry-run
  • Pastikan domain sudah mengarah ke server sebelum memasang SSL
  • Selalu arahkan HTTP ke HTTPS agar tidak ada konten campuran
  • Backup konfigurasi Nginx/Caddy sebelum perubahan signifikan
Catatan penting: Pastikan selalu memperbarui sertifikat SSL sebelum kedaluwarsa. Meskipun auto-renewal aktif, periksa secara berkala dengan certbot certificates untuk memastikan semua sertifikat masih valid. Jika sertifikat kedaluwarsa, website akan ditandai "Tidak Aman" oleh browser.
Ingat: HTTPS adalah hak, bukan kemewahan. Setiap website berhak memiliki koneksi terenkripsi, dan Let's Encrypt membuatnya dapat diakses oleh semua orang secara gratis.
Dipublikasikan untuk membantu para pengelola website mengamankan situs mereka dengan HTTPS gratis.

Artikel Terkait