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:
| Persyaratan | Detail |
|---|---|
| Sistem Operasi | Ubuntu 18.04, 20.04, atau 22.04 LTS |
| Web Server | Nginx terinstal dan secara aktif melayani situs Anda |
| Nama Domain | Domain terdaftar dengan record A yang menunjuk ke IP publik server Anda |
| Akses Server | Akses SSH dengan pengguna yang memiliki sudo privileges |
| Firewall | Port 80 (HTTP) dan 443 (HTTPS) terbuka di UFW atau iptables |
| Akses Root | Tidak benar-benar diperlukan, tetapi akses sudo adalah wajib |
Verifikasi Nginx Berjalan
Sebelum menginstal Certbot, konfirmasi Nginx aktif:
sudo systemctl status nginxAnda 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 nginxBuka Port Firewall yang Diperlukan
Jika UFW diaktifkan, izinkan traffic HTTP dan HTTPS:
sudo ufw allow 'Nginx Full'
sudo ufw reload
sudo ufw statusOutput 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 -yInstal Certbot dengan Plugin Nginx
sudo apt install certbot python3-certbot-nginx -yVerifikasi Instalasi
certbot --versionOutput 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.comTambahkan 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 -tOutput yang diharapkan:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulMuat Ulang Nginx
sudo systemctl reload nginxLangkah 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.comPenjelasan 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/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 certificatesOutput:
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.pemMetode 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 -issuerOutput 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=R11Langkah 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.timerOutput 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.serviceJika 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-runOutput 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/certbotAnda 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 renewIni 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.shTambahkan konten berikut:
#!/bin/bash
systemctl reload nginxBuat dapat dieksekusi:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shPemecahan 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 nginxError: "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 +shortOutput 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.comSetelah 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 nginxSertifikat 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 nginxMemilih 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:
- ✅ Menginstal Certbot dan plugin Nginx
- ✅ Mengonfigurasi blok server Nginx yang tepat untuk domain Anda
- ✅ Memperoleh sertifikat SSL Let's Encrypt yang terpercaya
- ✅ Memverifikasi sertifikat menggunakan alat browser, SSL Labs, dan OpenSSL
- ✅ Mengkonfirmasi pembaruan otomatis melalui timer systemd dan pengujian dry-run
- ✅ 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.
untuk semua layanan hosting