Instal Mari Enkripsi Sertifikat SSL untuk Nginx di RHEL 9/8


Dalam artikel ini, kami akan memandu Anda tentang cara membuat dan memasang sertifikat SSL/TLS yang diperoleh secara gratis dari Let's Encrypt Certificate Authority yang akan kami gunakan untuk mengamankan transaksi HTTP server web Nginx di RHEL dan Distribusi berbasis RHEL seperti Fedora, Rocky Linux dan AlmaLinux.

Jika Anda ingin menginstal Let’s Encrypt untuk Apache pada distribusi berbasis RHEL dan RHEL, ikuti panduan di bawah ini:

Persyaratan

  • Nama domain terdaftar dengan catatan DNS A yang valid untuk mengarah kembali ke Alamat IP publik server.
  • Server web Nginx diinstal dengan SSL diaktifkan dan Host Virtual diaktifkan (hanya untuk hosting beberapa domain atau subdomain).

Pengaturan Lingkungan Pengujian kami

Langkah 1: Instal Server Web Nginx di Sistem RHEL

1. Pada langkah pertama, jika Anda belum menginstal daemon Nginx, jalankan perintah di bawah ini dengan hak akses root untuk menginstal server web Nginx dari repositori Epel.


------------- On RHEL, Rocky & AlmaLinux 9 ------------- 
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

------------- On RHEL, Rocky & AlmaLinux 8 -------------
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

------------- Install Nginx Web Server -------------
yum install nginx

Catatan: Pengguna Fedora tidak perlu menginstal repositori epel.

Langkah 2: Instal Let's Encrypt (Certbot) di Sistem RHEL

2. Metode tercepat untuk menginstal klien Let's Encrypt pada sistem Linux adalah dengan menginstal paket certbot dan python3-certbot-nginx dari repositori epel .


dnf install certbot python3-certbot-nginx

3. Setelah klien certbot diinstal, verifikasi versi perangkat lunak Let's Encrypt yang diinstal dengan menjalankan perintah di bawah ini:


certbot --version

certbot 1.30.0

Langkah 3: Dapatkan Sertifikat SSL Let's Encrypt Gratis untuk Nginx

4. Proses mendapatkan Sertifikat SSL/TLS gratis untuk Nginx akan dilakukan secara manual dengan menggunakan Let's Encrypt Standalone plugin.

Metode ini mengharuskan port 80 harus kosong selama klien Let's Encrypt memvalidasi identitas server dan menghasilkan sertifikat.

Jadi, jika Nginx sudah berjalan, hentikan daemon dengan perintah berikut dan jalankan utilitas ss untuk mengonfirmasi bahwa port 80 tidak lagi digunakan di tumpukan jaringan.


service nginx stop
systemctl stop nginx
ss -tln

5. Sekarang saatnya mendapatkan Sertifikat SSL gratis dari Let's Encrypt dengan menjalankan perintah certbot dengan --nginx untuk menginisialisasi pengambilan dan konfigurasi sertifikat keamanan Let's Encrypt untuk domain Nginx.


certbot --nginx
Or
certbot --nginx -d example.com -d www.example.com

6. Terakhir, jika semuanya berjalan sebagaimana mestinya, pesan info ucapan selamat akan ditampilkan di terminal bash Anda. Pesan tersebut juga akan ditampilkan kapan sertifikat akan kedaluwarsa.

Langkah 4: Instal Mari Enkripsi Sertifikat SSL di Nginx

9. Sekarang Anda memiliki Sertifikat SSL/TLS gratis, sekarang saatnya menginstalnya di server web Nginx agar domain Anda dapat menggunakannya.

Semua sertifikat SSL baru ditempatkan di /etc/letsencrypt/live/ di bawah direktori yang diberi nama sesuai nama domain Anda. Gunakan perintah ls untuk membuat daftar file Sertifikat yang diterbitkan untuk domain Anda dan mengidentifikasinya.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. Untuk menginstal file sertifikat di Nginx dan mengaktifkan SSL, buka file /etc/nginx/nginx.conf untuk diedit dan tambahkan pernyataan di bawah ini setelah baris pendengaran terakhir dari blok server. Gunakan ilustrasi di bawah ini sebagai panduan.

vi /etc/nginx/nginx.conf

Kutipan blok Nginx SSL:

SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

Ganti string nama domain untuk sertifikat SSL agar sesuai dengan domain Anda.

11. Terakhir, mulai ulang layanan Nginx dan kunjungi domain Anda melalui Protokol HTTPS di https://domainanda. Halaman akan dimuat dengan lancar, tanpa kesalahan sertifikat apa pun.

systemctl restart nginx
service nginx restart

12. Untuk memverifikasi sertifikat SSL/TLS dan kebenarannya, kunjungi tautan berikut:

https://www.ssllabs.com/ssltest/analyze.html 

13. Jika Anda mendapat pemberitahuan bahwa server Anda mendukung pertukaran kunci DH yang lemah dan peringkat keseluruhan B, buat baru sandi kuat>Diffie-Hellman di direktori /etc/nginx/ssl/ untuk melindungi server Anda dari serangan Logjam dengan menjalankan perintah berikut.

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 4096

Dalam contoh ini kami menggunakan kunci bit 4096, yang sebenarnya membutuhkan waktu lama untuk menghasilkan dan memberikan overhead tambahan pada server Anda dan pada handshake SSL.

Jika tidak ada kebutuhan eksplisit untuk menggunakan kunci selama ini dan Anda tidak terlalu paranoid, Anda harus aman dengan kunci bit 2048.

14. Setelah kunci DH dibuat, buka file konfigurasi Nginx dan tambahkan pernyataan di bawah ini setelah baris ssl_ciphers untuk menambahkan kunci DH dan tingkatkan tingkat keamanan domain Anda ke tingkat A+.

vi /etc/nginx/nginx.conf

Tambahkan kutipan blok berikut ke Nginx.conf:

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. Mulai ulang layanan Nginx untuk menerapkan perubahan dan uji ulang sertifikat SSL Anda dengan membersihkan cache hasil sebelumnya dari tautan yang disebutkan di atas.

systemctl restart nginx
service nginx restart

Langkah 5: Perpanjang Otomatis Nginx Gratis Mari Enkripsi Sertifikat SSL

16. Let's Encrypt CA merilis sertifikat SSL/TLS gratis yang valid selama 90 hari. Sertifikat dapat diperpanjang secara manual dan diterapkan sebelum masa berlakunya habis menggunakan plugin webroot, tanpa menghentikan server web Anda, dengan mengeluarkan perintah di bawah ini:


certbot --nginx -d example.com -d www.example.com
systemctl reload nginx

Saat menjalankan perintah di atas pastikan Anda mengganti example.com agar sesuai dengan domain Anda.

17. Untuk memperbarui sertifikat secara otomatis sebelum masa berlakunya habis, buat tugas cron ke file crontab yang sudah ada.


crontab -e

Tambahkan tugas cron berikut di bagian bawah file, yang akan dijalankan setiap hari pada siang hari untuk memeriksa masa berlaku sertifikat dan memperbaruinya. Opsi --quiet memberitahu certbot untuk tidak menghasilkan keluaran.


0 12 * * * /usr/bin/certbot renew --quiet

Itu saja! Kini, server Nginx dapat mengirimkan konten web yang aman dengan sertifikat SSL/TLS Let's Encrypt gratis di situs web Anda.