Cara Mengamankan Nginx dengan Let's Encrypt di Ubuntu dan Debian


Mengikuti tutorial Let's Encrypt sebelumnya mengenai Apache SSL, dalam artikel ini kita akan membahas cara membuat dan memasang sertifikat SSL/TLS gratis yang dikeluarkan oleh Let's Encrypt CA untuk server web Nginx di Ubuntu atau Debian.

Baca juga
  1. Amankan Apache dengan Let's Encrypt Gratis di Ubuntu dan Debian
  2. Instal Mari Enkripsi SSL untuk Mengamankan Apache di RHEL dan CentOS
Menguji Lingkungan Sampel

Persyaratan

  1. Domain terdaftar dengan catatan A DNS yang valid untuk mengarah kembali ke alamat IP server Anda.
  2. Server web Nginx yang terinstal dengan SSL dan Vhost yang diaktifkan, jika Anda berencana menghosting beberapa domain atau subdomain.

Langkah 1: Menginstal Server Web Nginx

1. Pada langkah pertama instal server web Nginx, jika belum diinstal, dengan mengeluarkan perintah di bawah ini:

sudo apt-get install nginx

Langkah 2: Hasilkan Sertifikat SSL Mari Enkripsi untuk Nginx

2. Sebelum membuat sertifikat SSL/TLS gratis, instal perangkat lunak Let's Encrypt dalam hierarki sistem file /usr/local/ dengan bantuan git klien dengan mengeluarkan perintah di bawah ini:

sudo apt-get -y install git
cd /usr/local/
sudo git clone https://github.com/letsencrypt/letsencrypt

3. Meskipun prosedur untuk mendapatkan Sertifikat untuk Nginx dilakukan secara otomatis, Anda masih dapat membuat dan menginstal sertifikat SSL gratis untuk Nginx secara manual menggunakan plugin Let's Encrypt Standalone.

Metode ini mengharuskan port 80 tidak boleh digunakan di sistem Anda untuk jangka waktu singkat sementara klien Let's Encrypt memvalidasi identitas server sebelum membuat sertifikat.

Jika Anda sudah menjalankan Nginx, hentikan layanan dengan mengeluarkan perintah berikut.


sudo service nginx stop
OR
sudo systemctl stop nginx

Jika Anda menjalankan layanan lain yang terikat pada port 80, hentikan juga layanan itu.

4. Konfirmasikan bahwa port 80 bebas dengan menjalankan perintah netstat:

sudo netstat -tlpn | grep 80

5. Sekarang saatnya menjalankan letsencrypt untuk mendapatkan Sertifikat SSL. Buka direktori instalasi Let's Encrypt yang terdapat di jalur sistem /usr/local/letsencrypt dan jalankan perintah letsencrypt-auto dengan memberikan --standalone dan tanda -d untuk setiap domain atau subdomain yang ingin Anda buatkan sertifikatnya.

cd /usr/local/letsencrypt
sudo ./letsencrypt-auto certonly --standalone -d your_domain.tld 

6. Masukkan alamat email yang akan digunakan oleh Let's Encrypt untuk pemulihan kunci yang hilang atau pemberitahuan mendesak.

7. Setuju dengan persyaratan lisensi dengan menekan tombol Enter.

8. Terakhir, jika semuanya berjalan sukses, pesan yang mirip dengan tangkapan layar di bawah akan muncul di konsol terminal Anda.

Langkah 3: Instal Mari Enkripsi Sertifikat SSL di Nginx

9. Sekarang Sertifikat SSL Anda telah dibuat, sekarang saatnya mengonfigurasi server web Nginx untuk menggunakannya. Sertifikat SSL baru ditempatkan di /etc/letsencrypt/live/ di bawah direktori yang diberi nama sesuai nama domain Anda. Jalankan perintah ls untuk mencantumkan file Sertifikat yang dikeluarkan untuk domain Anda.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/caeszar.tk

10. Selanjutnya, buka file /etc/nginx/sites-available/default dengan editor teks dan tambahkan blok berikut setelah baris komentar pertama yang menentukan awal dari blok SSL. Gunakan tangkapan layar di bawah ini sebagai panduan.

sudo nano /etc/nginx/sites-enabled/default

Kutipan blok Nginx:

SSL configuration
        #
        listen 443 ssl default_server;
        ssl_certificate /etc/letsencrypt/live/caeszar.tk/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/caeszar.tk/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
        ssl_dhparam /etc/nginx/ssl/dhparams.pem;

Ganti nilai nama domain untuk sertifikat SSL.

11. Pada langkah berikutnya, buat sandi Diffie-Hellman yang kuat di direktori /etc/nginx/ssl/ untuk melindungi server Anda dari serangan serangan Logjam dengan menjalankan perintah berikut.

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

12. Terakhir, restart daemon Nginx untuk mencerminkan perubahan.

sudo systemctl restart nginx

dan uji sertifikat SSL Anda dengan mengunjungi URL di bawah ini.

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

Langkah 4: Perpanjangan Otomatis Mari Enkripsi Sertifikat Nginx

13. Sertifikat yang diterbitkan oleh Let's Encrypt CA berlaku selama 90 hari. Untuk memperbarui file secara otomatis sebelum tanggal kedaluwarsa, buat skrip bash ssl-renew.sh di direktori /usr/local/bin/ dengan konten berikut.

sudo nano /usr/local/bin/ssl-renew.sh

Tambahkan konten berikut ke file ssl-renew.sh.

#!/bin/bash

cd /usr/local/letsencrypt
sudo ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/var/www/html/ -d your_domain.tld
sudo systemctl reload nginx
exit 0

Ganti variabel --webroot-path agar sesuai dengan root dokumen Nginx Anda. Pastikan skrip dapat dieksekusi dengan mengeluarkan perintah berikut.

sudo chmod +x /usr/local/bin/ssl-renew.sh

14. Terakhir tambahkan tugas cron untuk menjalankan skrip setiap dua bulan pada tengah malam untuk memastikan bahwa sertifikat Anda akan diperbarui sekitar 30 hari sebelum masa berlakunya habis.

sudo crontab -e

Tambahkan baris berikut di bagian bawah file.

0 1 1 */2 * /usr/local/bin/ssl-renew.sh >> /var/log/your_domain.tld-renew.log 2>&1

Itu dia! Server Nginx Anda sekarang menyajikan konten SSL menggunakan sertifikat Let's Encrypt SSL gratis.