Pada artikel ini, kami akan menjelaskan langkah-langkah yang diperlukan untuk mengamankan Nginx dengan enkripsi mari di CentOS 8. 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 yang menyediakan sertifikat SSL gratis untuk situs web, beroperasi sejak April 2016, dan didukung oleh perusahaan dan organisasi internet dunia seperti Mozilla, Cisco, Chrome , Akamai, dll.
Prasyarat:
- Sistem Operasi dengan CentOS Linux
- 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 DNF
Amankan Nginx dengan Let's Encrypt di CentOS
Langkah 1. Perintah pertama akan memperbarui daftar paket untuk memastikan Anda mendapatkan versi dan dependensi terbaru.
sudo dnf install epel-release sudo dnf update sudo dnf install mod_ssl openssl
Sebelum menginstal domain SSL Let’s Encrypt sebaiknya diakses dengan baik dan gunakan virtual host Nginx. Baca tutorial cara install Nginx di CentOS 8.
Langkah 2. Instal Certbot.
Paket certbot tidak termasuk dalam repositori CentOS 8 standar, tetapi dapat diunduh dari situs web vendor:
sudo wget -P /usr/local/bin https://dl.eff.org/certbot-auto sudo chmod +x /usr/local/bin/certbot-auto
Selanjutnya, buat set baru parameter DH 2048-bit menggunakan perintah berikut:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Untuk mendapatkan sertifikat SSL untuk domain, kita akan menggunakan plugin Webroot yang bekerja dengan membuat file sementara untuk memvalidasi domain yang diminta di direktori ${webroot-path}/.well-known/acme-challenge:
sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp nginx /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt
Untuk menghindari duplikasi kode, buat dua cuplikan berikut yang akan disertakan dalam semua file blok server Nginx:
sudo mkdir /etc/nginx/snippets
$ 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; }
$ 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 off; 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=63072000" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
Setelah cuplikan dibuat, buka blok server domain dan sertakan cuplikan letsencrypt.conf, seperti yang ditunjukkan di bawah ini:
$ nano /etc/nginx/conf.d/example.com.conf server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Muat ulang konfigurasi Nginx agar perubahan diterapkan:
sudo systemctl reload nginx
Kemudian, jalankan perintah ini untuk mendapatkan sertifikat dan minta Certbot mengedit konfigurasi Nginx Anda secara otomatis untuk menyajikannya, mengaktifkan akses HTTPS dalam satu langkah:
sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d your-domain.com -d www.your-domain.com
Terakhir, langkah-langkah, edit blok server domain Anda sebagai berikut:
$ nano /etc/nginx/conf.d/example.com.conf server { listen 80; server_name www.your-domain.com your-domain.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.your-domain.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; # . . . other code }
Muat ulang layanan Nginx agar perubahan diterapkan:
sudo systemctl reload nginx
Langkah 4. 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
Selamat, Anda telah mempelajari cara mengamankan Nginx dengan mari mengenkripsi di CentOS 8. Jika Anda memiliki pertanyaan, silakan tinggalkan komentar di bawah.