Install SSL Gratis dengan Let’s Encrypt di Nginx: Auto-Renewal Setup

by -5 Views
Install SSL Gratis dengan Let's Encrypt

Di tahun 2026, website tanpa HTTPS tidak hanya dianggap tidak aman oleh browser — tapi juga di-penalize Google di hasil pencarian. Kabar baiknya: Anda tidak perlu bayar mahal untuk sertifikat SSL. Let’s Encrypt memberikan SSL gratis, valid, dan trusted oleh semua browser modern. Artikel ini adalah panduan lengkap install SSL di Nginx dengan auto-renewal, agar Anda tidak perlu pusing soal expiry lagi.

Saya asumsikan Anda sudah punya VPS Ubuntu dengan Nginx terinstall dan domain sudah pointing ke IP VPS. Kalau belum, setup dulu fondasinya.


1. Apa Itu SSL/TLS dan Kenapa Wajib?

SSL (Secure Sockets Layer) — sekarang disebut TLS (Transport Layer Security) — adalah enkripsi yang melindungi data antara browser user dan server Anda. Tanpa SSL, data (password, token, form) dikirim dalam teks polos yang bisa di-intercept.

Dampak Tidak Pakai SSL:

  • Browser menampilkan “Not Secure” di address bar — user tidak percaya.
  • Google Chrome memblokir form submission di HTTP.
  • SEO ranking turun — Google prioritaskan HTTPS sejak 2014.
  • Tidak bisa pakai HTTP/2 dan modern web features.

Let’s Encrypt vs SSL Berbayar:

FiturLet’s EncryptSSL Berbayar (DigiCert, dll)
HargaGratisRp 200rb – 5jt/tahun
ValidasiDomain (DV)Organization (OV) / Extended (EV)
Wildcard (*.domain)✅ Bisa✅ Bisa
Trust Browser✅ 100%✅ 100%
Masa Valid90 hari1-2 tahun
Auto-Renewal✅ Native⚠️ Manual/CSR

Untuk 99% website — terutama developer, startup, dan blog — Let’s Encrypt sudah lebih dari cukup.


2. Install Certbot dan Plugin Nginx

Certbot adalah tool official dari EFF (Electronic Frontier Foundation) untuk generate dan manage Let’s Encrypt certificate.

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

Verifikasi install:

certbot --version

Harus muncul certbot 2.x.


3. Pastikan Nginx Server Block Sudah Benar

Certbot akan membaca konfigurasi Nginx Anda untuk tahu domain mana yang aktif. Pastikan server block sudah ada:

sudo nano /etc/nginx/sites-available/zulfianto.com

Minimal:

server {
    listen 80;
    server_name zulfianto.com www.zulfianto.com;
    root /var/www/zulfianto.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Aktifkan:

sudo ln -s /etc/nginx/sites-available/zulfianto.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Penting: Domain harus sudah resolve ke IP VPS. Certbot akan verify kepemilikan domain via HTTP challenge (mengakses file di server Anda). Kalau domain belum pointing, Certbot akan gagal.


4. Generate SSL Certificate

Jalankan Certbot dengan plugin Nginx:

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

Ikuti wizard:

<

  1. Masukkan email untuk notifikasi expiry dan security alert.
  2. Accept Terms of Service.
  3. Pilih apakah mau share email dengan EFF (opsional).
  4. Certbot akan detect server block Anda dan tanya: “Please choose whether or not to redirect HTTP traffic to HTTPS.”

Pilih:

2: Redirect - Make all requests redirect to secure HTTPS access

Certbot akan:

  • Generate certificate
  • Install ke Nginx
  • Edit konfigurasi server block Anda untuk listen 443 + SSL
  • Tambahkan redirect 80 → 443

Output sukses:

Congratulations! You have successfully enabled https://zulfianto.com and https://www.zulfianto.com

Test: Buka https://zulfianto.com. Harus muncul 🔒 lock icon di browser.


5. Verifikasi Auto-Renewal

Let’s Encrypt certificate hanya valid 90 hari. Tapi jangan khawatir — Certbot sudah setup auto-renewal via systemd timer atau cron.

Cek timer:

sudo systemctl list-timers | grep certbot

Atau cek cron:

sudo cat /etc/cron.d/certbot

Secara default, Certbot akan coba renew setiap 12 jam. Kalau certificate sudah mendekati expiry (30 hari sebelum habis), auto-renewal akan jalan.

Test Auto-Renewal Manual (Simulasi)

sudo certbot renew --dry-run

Ini akan simulasi proses renew tanpa mengganti certificate aktif. Kalau output:

Congratulations, all renewals succeeded.

Berarti auto-renewal Anda berfungsi sempurna. Anda bisa lupa soal SSL selamanya.


6. Struktur File SSL yang Dibuat Certbot

Certbot menyimpan certificate di:

/etc/letsencrypt/live/zulfianto.com/
├── fullchain.pem    # Certificate + chain (untuk Nginx)
├── privkey.pem      # Private key (rahasia!)
├── cert.pem         # Certificate saja
└── chain.pem        # Chain saja

Nginx config yang di-edit Certbot akan terlihat seperti:

server {
    listen 443 ssl;
    server_name zulfianto.com;

    ssl_certificate /etc/letsencrypt/live/zulfianto.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/zulfianto.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/zulfianto.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

server {
    listen 80;
    server_name zulfianto.com;
    return 301 https://$server_name$request_uri;
}

Penjelasan:

  • listen 443 ssl — Port HTTPS.
  • ssl_certificate — Path ke fullchain (certificate + intermediate).
  • ssl_certificate_key — Path ke private key.
  • return 301 — Redirect permanent HTTP ke HTTPS.

7. SSL untuk Multiple Domain (Single VPS)

Kalau Anda punya banyak domain di 1 VPS — misalnya zulfianto.com, raytekno.com, app.zulfianto.com — generate semua sekaligus:

sudo certbot --nginx -d zulfianto.com -d www.zulfianto.com -d raytekno.com -d www.raytekno.com -d app.zulfianto.com

Atau tambahkan satu per satu:

sudo certbot --nginx -d app.zulfianto.com

Semua certificate akan di-manage oleh Certbot yang sama. Auto-renewal akan handle semua domain.


8. Wildcard SSL (*.zulfianto.com)

Wildcard certificate mengamankan semua subdomain: api.zulfianto.com, blog.zulfianto.com, dashboard.zulfianto.com, dll.

Wildcard tidak bisa pakai HTTP challenge. Harus pakai DNS challenge (prove ownership via DNS record).

sudo certbot certonly --manual --preferred-challenges dns -d *.zulfianto.com -d zulfianto.com

Certbot akan kasih instruksi tambah TXT record di DNS. Setelah propagate, tekan Enter. Certificate akan di-generate.

Catatan: Wildcard dengan manual DNS challenge tidak bisa auto-renewal otomatis (kecuali DNS provider Anda support API, seperti Cloudflare). Untuk kebanyakan kasus, generate per-domain lebih praktis.


9. Troubleshooting SSL

Error: “Could not authenticate to the ACME server”

Penyebab: Domain tidak resolve ke IP VPS, atau firewall blok port 80.
Solusi:

dig zulfianto.com +short          # Cek IP domain
sudo ufw status                   # Cek firewall
sudo ufw allow 80/tcp             # Pastikan port 80 terbuka

Error: “Certificate not yet due for renewal”

Penyebab: Anda coba renew padahal certificate masih baru.
Solusi: Bukan error. Certbot hanya renew kalau < 30 hari ke expiry. Test dengan --dry-run saja.

Browser Masih Bilang “Not Secure” Setelah Install

Penyebab: Mixed content (asset HTTP di halaman HTTPS), atau certificate belum propagate.
Solusi:

# Cek certificate info
openssl s_client -connect zulfianto.com:443 -servername zulfianto.com

# Cek mixed content di browser DevTools → Console

Auto-Renewal Gagal Setelah Beberapa Bulan

Penyebab: Nginx config berubah, atau port 80 tertutup, atau domain expired/pindah.
Solusi:

sudo certbot renew --dry-run
sudo tail -f /var/log/letsencrypt/letsencrypt.log

10. Hardening SSL: A+ Rating di SSL Labs

SSL aktif belum cukup. Pastikan konfigurasi Anda aman dari vulnerabilitas:

Tambahkan di server block (biasanya sudah di-include Certbot):

# /etc/nginx/snippets/ssl-hardening.conf

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=63072000" always;

Include di server block:

include /etc/nginx/snippets/ssl-hardening.conf;

Test rating di SSL Labs. Target: A+.


Kesimpulan: SSL adalah Foundation, Bukan Luxury

Dengan Let’s Encrypt + Certbot + Nginx, Anda mendapatkan:

  • ✅ SSL gratis dan valid 100%
  • ✅ Auto-renewal tanpa intervensi manual
  • ✅ Redirect HTTP → HTTPS otomatis
  • ✅ Konfigurasi A+ security rating
  • ✅ Support multiple domain dan wildcard

Semua ini gratis. Semua ini otomatis. Tidak ada alasan lagi untuk tidak pakai HTTPS di 2026.

SSL dan keamanan server adalah modul wajib yang saya ajarkan secara praktis di kelas.zulfianto.com/course/belajar-server. Bukan sekadar install certbot, tapi pahami cara kerja enkripsi, cara handle mixed content, dan cara troubleshoot saat certificate bermasalah.

— Tested on Ubuntu 24.04 + Nginx 1.24 + Certbot 2.x, Mei 2026

No More Posts Available.

No more pages to load.