Pada artikel ini, kami akan menjelaskan langkah-langkah yang diperlukan untuk mengamankan Nginx dengan enkripsi mari di Ubuntu 20.04 LTS. Sebelum melanjutkan tutorial ini, pastikan Anda login sebagai pengguna dengan sudo
hak istimewa. Semua perintah dalam tutorial ini harus dijalankan sebagai pengguna non-root.
Let's Encrypt adalah otoritas sertifikat gratis, otomatis, dan terbuka yang dikembangkan oleh Internet Security Research Group (ISRG) yang menyediakan sertifikat SSL gratis. Let's Encrypt menggunakan perangkat lunak klien (certbot) yang mengotomatiskan proses pembuatan sertifikat, validasi, penandatanganan, penerapan, dan pembaruan sertifikat.
Prasyarat:
- Sistem Operasi dengan Ubuntu 20.04
- Alamat IPv4 Server dengan Hak Pengguna Super (Akses Root)
- Terminal Gnome untuk Desktop Linux
- Klien Putty SSH untuk Windows atau macOS
- Powershell untuk Windows 10/11
- Familiar dengan Perintah APT
Amankan Nginx dengan Let's Encrypt di Ubuntu 20.04
Langkah 1. Pertama, sebelum Anda mulai menginstal paket apa pun di server Ubuntu Anda, kami selalu menyarankan untuk memastikan bahwa semua paket sistem telah diperbarui.
sudo apt update sudo apt upgrade
Catatan:Sebelum menginstal, domain SSL Let’s Encrypt harus diakses dengan baik dan menggunakan virtual host Nginx. Baca tutorial tentang cara menginstal Nginx di Ubuntu.
Langkah 2. Instal Certbot.
Certbot adalah alat berfitur lengkap dan mudah digunakan yang mengotomatiskan tugas untuk memperoleh dan memperbarui sertifikat SSL Let's Encrypt dan mengonfigurasi server web untuk menggunakan sertifikat . Untuk menginstalnya jalankan perintah berikut:
sudo apt install certbot
Setelah itu, Buat satu set parameter DH 2048 bit baru dengan mengetikkan perintah berikut:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Server Let's Encrypt membuat permintaan HTTP ke file sementara untuk memverifikasi bahwa domain yang diminta diselesaikan ke server tempat certbot berjalan. Untuk membuatnya lebih sederhana, kita akan memetakan semua permintaan HTTP untuk .well-known/acme-challenge
ke satu direktori, /var/lib/letsencrypt
:
sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp www-data /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt
Kemudian, buat dua cuplikan berikut yang akan disertakan dalam semua file blok server Nginx:
sudo nano /etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
Selanjutnya, buat cuplikan kedua, ssl.conf:
sudo nano /etc/nginx/snippets/ssl.conf
ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; 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:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
Selanjutnya, buka file blok server domain dan sertakan letsencrypt.conf:
sudo nano /etc/nginx/sites-available/example.com.conf
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Jangan lupa untuk membuat tautan simbolis dari file ke direktori yang mendukung situs:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/ sudo systemctl restart nginx
Setelah selesai, jalankan Certbot dengan plugin webroot dan dapatkan file sertifikat SSL dengan menerbitkan:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Terakhir, langkah-langkah, edit blok server domain Anda sebagai berikut:
sudo nano /etc/nginx/sites-available/example.com.conf
server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; }
Muat ulang layanan Nginx agar perubahan diterapkan:
sudo systemctl reload nginx
Langkah 3. Memeriksa Status Sertifikat Anda.
Anda dapat memastikan bahwa Certbot membuat sertifikat SSL Anda dengan benar dengan menggunakan SSL Server Test dari perusahaan keamanan cloud Qualys. Buka tautan berikut di browser web pilihan Anda, ganti your-domain.com
dengan domain dasar Anda:
https://www.ssllabs.com/ssltest/analyze.html?d=your-domain.com
Langkah 4. Perbarui Let's Encrypt SSL Certificate
Dan terakhir, uji perpanjangan otomatis:
sudo certbot renew --dry-run
Hanya itu yang perlu Anda lakukan untuk menginstal SSL Let's Encrypt with Nginx di Ubuntu 20.04 Focal Fossa. Saya harap Anda menemukan tip cepat ini bermanfaat. Jika Anda memiliki pertanyaan atau saran, jangan ragu untuk meninggalkan komentar di bawah.