Hemat 15% untuk semua layanan hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode: Skills Memulai
Bagian FAQ
Keamanan Linux

Cara Mengamankan Nginx dengan Let’s Encrypt SSL di Ubuntu (Panduan Lengkap 2025)

HTTPS tidak lagi opsional. Pada tahun 2025, setiap website membutuhkan enkripsi SSL/TLS — bukan hanya untuk melindungi data pengguna, tetapi untuk bersaing di Google Search dan memenuhi persyaratan keamanan browser modern. Let’s Encrypt membuat ini dapat dicapai secara gratis, menawarkan sertifikat SSL yang terpercaya dan auto-renewing yang bekerja dengan mulus dengan Nginx di Ubuntu.

Panduan komprehensif ini memandu Anda melalui setiap langkah: menginstal Certbot, mendapatkan sertifikat SSL Let’s Encrypt, memverifikasi konfigurasi Anda, dan mengotomatisasi pembaruan — semuanya di server Ubuntu 18.04, 20.04, atau 22.04 yang menjalankan Nginx.

Baik Anda mengelola lingkungan VPS Hosting atau server web khusus, tutorial ini memberikan Anda setup HTTPS siap produksi dalam waktu kurang dari 15 menit.

Mengapa SSL Penting untuk Nginx di 2025

Sebelum menyelami perintah, ada baiknya memahami apa yang Anda dapatkan dengan mengamankan Nginx dengan Let's Encrypt:

  • Enkripsi data: HTTPS mengenkripsi semua lalu lintas antara server Anda dan pengunjung, mencegah serangan man-in-the-middle dan penyadapan.
  • Sinyal peringkat SEO: Google telah mengkonfirmasi HTTPS sebagai faktor peringkat. Situs tanpa SSL secara aktif dihukum dalam hasil pencarian.
  • Indikator kepercayaan browser: Chrome, Firefox, dan Edge menampilkan peringatan "Tidak Aman" untuk situs HTTP, menghancurkan kepercayaan pengguna dan meningkatkan tingkat bounce.
  • Gratis dan otomatis: Let's Encrypt mengeluarkan sertifikat tanpa biaya, dan Certbot menangani pembaruan secara otomatis — menghilangkan overhead manual dari sertifikat berbayar.
  • PCI DSS dan kepatuhan: Situs apa pun yang menangani pembayaran atau data pribadi secara hukum diperlukan untuk menggunakan koneksi terenkripsi.

Jika domain Anda sudah terdaftar dan menunjuk ke server Anda, Anda siap untuk memulai. Jika Anda masih membutuhkan domain, AlexHost menawarkan Pendaftaran Domain yang terjangkau dengan manajemen DNS instan.

Prasyarat

Pastikan kondisi berikut terpenuhi sebelum melanjutkan:

PersyaratanDetail
Sistem OperasiUbuntu 18.04, 20.04, atau 22.04 LTS
Web ServerNginx terinstal dan secara aktif melayani situs Anda
Nama DomainDomain terdaftar dengan record A yang menunjuk ke IP publik server Anda
Akses ServerAkses SSH dengan pengguna yang memiliki sudo privileges
FirewallPort 80 (HTTP) dan 443 (HTTPS) terbuka di UFW atau iptables
Akses RootTidak benar-benar diperlukan, tetapi akses sudo adalah wajib

Verifikasi Nginx Berjalan

Sebelum menginstal Certbot, konfirmasi Nginx aktif:

sudo systemctl status nginx

Anda harus melihat active (running) dalam output. Jika Nginx tidak terinstal, jalankan:

sudo apt update && sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

Buka Port Firewall yang Diperlukan

Jika UFW diaktifkan, izinkan traffic HTTP dan HTTPS:

sudo ufw allow 'Nginx Full'
sudo ufw reload
sudo ufw status

Output harus menunjukkan Nginx Full sebagai ALLOW untuk IPv4 dan IPv6.

Langkah 1 — Menginstal Certbot dan Plugin Nginx

Certbot adalah klien Let’s Encrypt resmi. Ini mengotomatisasi seluruh siklus hidup sertifikat: penerbitan, instalasi, dan pembaruan. Plugin python3-certbot-nginx memungkinkan Certbot membaca konfigurasi Nginx Anda dan memodifikasinya secara otomatis.

Perbarui Indeks Paket Anda

Selalu perbarui daftar paket Anda sebelum menginstal perangkat lunak baru:

sudo apt update
sudo apt upgrade -y

Instal Certbot dengan Plugin Nginx

sudo apt install certbot python3-certbot-nginx -y

Verifikasi Instalasi

certbot --version

Output yang diharapkan (versi mungkin berbeda):

certbot 2.x.x

> Catatan untuk pengguna Ubuntu 18.04: Jika versi APT default Certbot sudah ketinggalan zaman, instal melalui Snap untuk rilis terbaru:

> “`bash

> sudo snap install –classic certbot

> sudo ln -s /snap/bin/certbot /usr/bin/certbot

> “`

Langkah 2 — Mengonfigurasi Blok Server Nginx Anda

Certbot perlu mendeteksi domain Anda dalam konfigurasi Nginx untuk memodifikasinya secara otomatis. Jika Anda belum membuat blok server untuk domain Anda, buatlah sekarang.

Buat Blok Server

Ganti yourdomain.com dengan nama domain aktual Anda di seluruh panduan ini:

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

Tambahkan konfigurasi dasar berikut:

server {
    listen 80;
    listen [::]:80;

    server_name yourdomain.com www.yourdomain.com;

    root /var/www/yourdomain.com/html;
    index index.html index.htm index.nginx-debian.html;

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

Aktifkan Blok Server

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/

Uji Konfigurasi Nginx

Selalu validasi konfigurasi Nginx Anda sebelum memuat ulang:

sudo nginx -t

Output yang diharapkan:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Muat Ulang Nginx

sudo systemctl reload nginx

Langkah 3 — Mendapatkan Sertifikat SSL Let's Encrypt

Dengan Nginx dikonfigurasi dan Certbot terinstal, Anda sekarang dapat meminta sertifikat SSL Anda.

Jalankan Certbot dengan Plugin Nginx

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

Penjelasan flag:

    --nginx — Memberitahu Certbot untuk menggunakan plugin Nginx untuk konfigurasi otomatis
    -d yourdomain.com — Menentukan domain utama
    -d www.yourdomain.com — Menambahkan subdomain www ke sertifikat yang sama (Subject Alternative Name)
    
    Penjelasan Prompt Interaktif
    Certbot akan memandu Anda melalui wizard setup singkat:
    1. Alamat Email
    Enter email address (used for urgent renewal and security notices):
    Berikan email yang valid. Let's Encrypt menggunakan ini untuk memberi tahu Anda tentang sertifikat yang akan kedaluwarsa dan masalah keamanan.
    2. Syarat Layanan
    Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf
    (A)gree/(C)ancel:
    Ketik A dan tekan Enter.
    3. Newsletter EFF (Opsional)
    Would you be willing to share your email address with the Electronic Frontier Foundation?
    (Y)es/(N)o:
    Ini opsional. Ketik N jika Anda lebih suka tidak berlangganan.
    4. Pengalihan HTTP ke HTTPS
    Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
    1: No redirect
    2: Redirect - Make all requests redirect to secure HTTPS access
    Selalu pilih opsi 2. Ini memastikan semua pengunjung secara otomatis ditingkatkan ke HTTPS, menghilangkan masalah konten campuran dan meningkatkan postur keamanan.
    Output yang Berhasil
    Jika semuanya dikonfigurasi dengan benar, Anda akan melihat:
    Successfully received certificate.
    Certificate is saved at: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
    Key is saved at:         /etc/letsencrypt/live/yourdomain.com/privkey.pem
    This certificate expires on YYYY-MM-DD.
    These files will be updated when the certificate renews.
    
    Deploying certificate
    Successfully deployed certificate for yourdomain.com to /etc/nginx/sites-available/yourdomain.com
    Successfully deployed certificate for www.yourdomain.com to /etc/nginx/sites-available/yourdomain.com
    Congratulations! You have successfully enabled HTTPS on https://yourdomain.com and https://www.yourdomain.com
    Apa yang Dimodifikasi Certbot di Nginx
    Setelah dijalankan, Certbot secara otomatis menambahkan direktif SSL ke blok server Anda. Konfigurasi Anda sekarang akan terlihat serupa dengan ini:
    server {
        server_name yourdomain.com www.yourdomain.com;
    
        root /var/www/yourdomain.com/html;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        listen 443 ssl;
        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    }
    
    server {
        if ($host = www.yourdomain.com) {
            return 301 https://$host$request_uri;
        }
        if ($host = yourdomain.com) {
            return 301 https://$host$request_uri;
        }
    
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        return 404;
    }
    Langkah 4 — Memverifikasi Instalasi SSL
    Setelah Certbot selesai, verifikasi bahwa sertifikat SSL Anda terinstal dengan benar dan berfungsi.
    Metode 1: Pemeriksaan Browser
    Buka browser web Anda dan navigasikan ke https://yourdomain.com. Cari:
    
    Ikon gembok di bilah alamat — mengkonfirmasi koneksi SSL yang aktif dan terpercaya
    Tidak ada peringatan keamanan — sertifikat valid dan dipercaya oleh browser Anda
    HTTPS di URL — permintaan HTTP harus secara otomatis dialihkan ke HTTPS
    
    Klik ikon gembok dan pilih "Sertifikat" untuk melihat penerbit (harus menampilkan "Let's Encrypt") dan tanggal kedaluwarsa.
    Metode 2: Analisis Mendalam SSL Labs
    Untuk audit keamanan yang komprehensif, gunakan Qualys SSL Labs:
    
    Navigasikan ke https://www.ssllabs.com/ssltest/
  • Masukkan nama domain Anda
  • Klik "Kirim"
  • Pengaturan Let's Encrypt + Nginx yang dikonfigurasi dengan benar harus mendapat skor A atau A+. Jika Anda mendapat skor lebih rendah, SSL Labs akan mengidentifikasi kelemahan spesifik yang perlu ditangani.

    Metode 3: Verifikasi Baris Perintah

    Periksa detail sertifikat langsung dari terminal:

    sudo certbot certificates

    Output:

    Found the following certs:
      Certificate Name: yourdomain.com
        Serial Number: abc123...
        Key Type: RSA
        Domains: yourdomain.com www.yourdomain.com
        Expiry Date: YYYY-MM-DD HH:MM:SS+00:00 (VALID: 89 days)
        Certificate Path: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
        Private Key Path: /etc/letsencrypt/live/yourdomain.com/privkey.pem

    Metode 4: Perintah OpenSSL

    Verifikasi rantai sertifikat dan kedaluwarsa menggunakan OpenSSL:

    echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates -issuer

    Output yang diharapkan:

    notBefore=Mon Jan  1 00:00:00 2025 GMT
    notAfter=Tue Apr  1 00:00:00 2025 GMT
    issuer=C=US, O=Let's Encrypt, CN=R11

    Langkah 5 — Menyiapkan Pembaruan Sertifikat Otomatis

    Sertifikat Let's Encrypt kadaluarsa setelah 90 hari. Periode validitas singkat ini disengaja — ini membatasi paparan jika kunci pribadi dikompromikan. Certbot menangani pembaruan secara otomatis, tetapi Anda harus memverifikasi bahwa otomasi berfungsi dengan benar.

    Cara Kerja Pembaruan Certbot

    Ketika Anda menginstal Certbot melalui APT atau Snap, secara otomatis membuat systemd timer (atau cron job pada sistem yang lebih lama) yang berjalan dua kali sehari. Ini memeriksa apakah ada sertifikat dalam 30 hari sebelum kadaluarsa dan memperbarui secara otomatis.

    Verifikasi Systemd Timer

    sudo systemctl status certbot.timer

    Output yang diharapkan:

    ● certbot.timer - Run certbot twice daily
         Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
         Active: active (waiting) since ...
        Trigger: ...
       Triggers: ● certbot.service

    Jika timer aktif dan diaktifkan, pembaruan otomatis sudah dikonfigurasi.

    Uji Proses Pembaruan (Dry Run)

    Sebelum mengandalkan pembaruan otomatis, simulasikan untuk memastikan semuanya berfungsi:

    sudo certbot renew --dry-run

    Output yang berhasil:

    Simulating renewal of an existing certificate for yourdomain.com and www.yourdomain.com
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Congratulations, all simulated renewals succeeded:
      /etc/letsencrypt/live/yourdomain.com/fullchain.pem (success)
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Jika dry run berhasil, sertifikat Anda akan diperbarui secara otomatis tanpa intervensi manual apa pun.

    Verifikasi Cron Job (Sistem Legacy)

    Pada versi Ubuntu yang lebih lama yang tidak menggunakan systemd timers, periksa cron job Certbot:

    sudo cat /etc/cron.d/certbot

    Anda harus melihat baris yang mirip dengan:

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

    Ini menjalankan Certbot dua kali sehari pada interval acak untuk menghindari membebani server Let's Encrypt.

    Pembaruan Manual (Jika Diperlukan)

    Jika Anda perlu memaksa pembaruan secara manual:

    sudo certbot renew --force-renewal
    sudo systemctl reload nginx

    > Best practice: Setelah pembaruan sertifikat apa pun (manual atau otomatis), muat ulang Nginx untuk memastikan itu mengambil file sertifikat baru:

    > “`bash

    > sudo systemctl reload nginx

    > “`

    > Hook pembaruan Certbot menangani ini secara otomatis dalam sebagian besar konfigurasi.

    Konfigurasi Hook Pembaruan

    Untuk memastikan Nginx dimuat ulang secara otomatis setelah setiap pembaruan, tambahkan deploy hook:

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

    Tambahkan konten berikut:

    #!/bin/bash
    systemctl reload nginx

    Buat dapat dieksekusi:

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

    Pemecahan Masalah Umum

    Error: "Could not bind to IPv4/IPv6"

    Certbot menggunakan port 80 untuk validasi domain. Jika proses lain menggunakan port 80, tantangan akan gagal.

    Solusi: Hentikan Nginx sementara, dapatkan sertifikat dalam mode standalone, kemudian mulai ulang:

    sudo systemctl stop nginx
    sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
    sudo systemctl start nginx

    Error: "DNS problem: NXDOMAIN looking up A for yourdomain.com"

    Catatan DNS domain Anda belum menyebar ke server validasi Let's Encrypt.

    Solusi: Verifikasi catatan A Anda diatur dengan benar:

    dig yourdomain.com A +short

    Output harus mengembalikan alamat IP publik server Anda. Penyebaran DNS dapat memakan waktu hingga 48 jam, meskipun biasanya diselesaikan dalam 1–2 jam.

    Error: "Too many certificates already issued"

    Let's Encrypt memberlakukan batas laju 5 sertifikat duplikat per minggu per domain.

    Solusi: Gunakan flag --staging untuk menguji pengaturan Anda tanpa mencapai batas laju:

    sudo certbot --nginx --staging -d yourdomain.com -d www.yourdomain.com

    Setelah pengujian selesai, cabut sertifikat staging dan terbitkan sertifikat produksi.

    Error: "Nginx configuration test failed"

    Certbot memodifikasi konfigurasi Nginx Anda. Jika konfigurasi yang dihasilkan memiliki kesalahan sintaks, Nginx tidak akan memuat ulang.

    Solusi: Uji dan perbaiki konfigurasi secara manual:

    sudo nginx -t
    sudo nano /etc/nginx/sites-available/yourdomain.com
    # Fix any syntax errors, then:
    sudo systemctl reload nginx

    Sertifikat Tidak Memperbarui Secara Otomatis

    Jika Anda menerima email peringatan kedaluwarsa meskipun Certbot sudah terpasang, periksa status timer:

    sudo systemctl status certbot.timer
    sudo journalctl -u certbot.service --since "7 days ago"

    Tinjau log untuk kesalahan dan tangani sesuai kebutuhan.

    Lanjutan: Pengerasan Konfigurasi SSL Nginx Anda

    Konfigurasi Let’s Encrypt + Certbot default aman, tetapi Anda dapat memperkerasnya lebih lanjut untuk skor A+ SSL Labs.

    Aktifkan HTTP/2

    Edit blok server Anda untuk mengaktifkan HTTP/2 untuk performa yang lebih baik:

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    Tambahkan HSTS (HTTP Strict Transport Security)

    HSTS menginstruksikan browser untuk selalu menggunakan HTTPS untuk domain Anda, bahkan jika pengguna mengetik http://:

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    Nonaktifkan Protokol dan Cipher Lemah

    Tambahkan direktif ini ke nginx.conf atau blok server Anda:

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    Setelah melakukan perubahan, selalu uji dan muat ulang:

    sudo nginx -t && sudo systemctl reload nginx

    Memilih Hosting yang Tepat untuk Setup Nginx + SSL Anda

    Performa dan keandalan server Nginx yang diamankan SSL bergantung banyak pada infrastruktur yang mendasarinya. Berikut adalah bagaimana opsi hosting AlexHost selaras dengan berbagai kasus penggunaan:

    • VPS Hosting — Ideal untuk sebagian besar website dan aplikasi. Akses root penuh memungkinkan Anda mengonfigurasi Nginx dan Certbot persis seperti yang dijelaskan dalam panduan ini. Paket VPS AlexHost berjalan di Ubuntu 18.04, 20.04, dan 22.04 LTS.
    • Dedicated Servers — Terbaik untuk website dengan traffic tinggi yang memerlukan performa maksimal, sumber daya dedicated, dan kontrol hardware penuh. Jalankan multiple virtual host Nginx, masing-masing dengan sertifikat Let’s Encrypt sendiri.
    • VPS dengan cPanel — Jika Anda lebih suka antarmuka grafis untuk mengelola sertifikat SSL bersama hosting web Anda, cPanel terintegrasi dengan Let’s Encrypt dan menangani penerbitan sertifikat melalui fitur AutoSSL-nya.
    • SSL Certificates — Untuk lingkungan enterprise, situs e-commerce, atau aplikasi yang memerlukan sertifikat extended validation (EV) atau organization validation (OV), AlexHost menawarkan sertifikat SSL premium dengan jaminan perlindungan dan dukungan dedicated.

    Kesimpulan

    Mengamankan Nginx dengan sertifikat SSL Let's Encrypt di Ubuntu adalah salah satu langkah paling berdampak yang dapat Anda ambil untuk melindungi pengguna Anda, meningkatkan peringkat mesin pencari Anda, dan membangun kepercayaan dengan audiens Anda. Seluruh proses — dari menginstal Certbot hingga mengaktifkan pembaruan otomatis — membutuhkan waktu kurang dari 15 menit dan tidak ada biaya.

    Untuk merangkum apa yang telah Anda capai dalam panduan ini:

    1. ✅ Menginstal Certbot dan plugin Nginx
    2. ✅ Mengonfigurasi blok server Nginx yang tepat untuk domain Anda
    3. ✅ Memperoleh sertifikat SSL Let's Encrypt yang terpercaya
    4. ✅ Memverifikasi sertifikat menggunakan alat browser, SSL Labs, dan OpenSSL
    5. ✅ Mengkonfirmasi pembaruan otomatis melalui timer systemd dan pengujian dry-run
    6. ✅ Menerapkan pengerasan lanjutan untuk peringkat keamanan A+

    Dengan server Nginx Anda sekarang aman, pertimbangkan untuk menjelajahi lapisan perlindungan tambahan: Web Application Firewall (WAF), fail2ban untuk perlindungan brute-force, dan audit keamanan rutin. Jika Anda mengelola beberapa domain atau aplikasi, VPS Control Panels AlexHost menyediakan antarmuka yang disederhanakan untuk mengelola sertifikat SSL, virtual host, dan konfigurasi server tanpa mengorbankan fleksibilitas lingkungan Linux.

    Pengguna Anda berhak mendapatkan koneksi yang aman. Sekarang mereka memilikinya.