Instalasi NGINX dan SSL Let’s Encrypt

Di timeline pembelajaran SSL saya, instalasi SSL di NGINX merupakan salah satu hal yang perlu saya coba dan pelajari. Sebelumnya saya sudah coba untuk instal SSL di Apache (cek link ini) dan kali ini saya coba pada sistem NGINX.

Untuk sistemnya, kita bisa siapkan terlebih dahulu VM/CT-nya. Pengujian yang saya lakukan menggunakan CT Debian polosan dan belum ada NGINX-nya, sehingga kita perlu instal terlebih dahulu.

SSL-nya menggunakan layanan SSL gratis yaitu Let’s Encrypt dan validasinya menggunakan metode DNS (saya ada akses ke domain zaidan.web.id – yang akan digunakan untuk pengujian kali ini).

Instalasi NGINX

Persiapkan CT dan lakukan update-upgrade terlebih dahulu. Lalu lakukan instalasi NGINX.

apt update && apt upgrade
apt install nginx -y

Setelah instalasi NGINX, coba tes dengan membuka web browser dan gunakan alamat IP dari CT yang digunakan.

Konfigurasi agar NGINX dijalankan secara otomatis.

systemctl enable nginx
systemctl start nginx

Instalasi SSL

Untuk penggunaan SSL, pada pengujian kali ini menggunakan tool bernama Certbot. Bisa diinstal dengan perintah:

apt install certbot -y

Selanjutnya, kita buat sertifikat SSL Let’s Encrypt-nya. Berikut contoh sintaks yang bisa digunakan:

certbot certonly --manual --preferred-challenges dns -d [domain]

Isi keterangannya sesuai dengan sistem yang digunakan.

Nantinya, Cerbot akan memberikan TXT record untuk ditambahkan pada panel DNS.

Pada panel DNS, saya juga menambahkan subdomain nginx.zaidan.web.id serta menambahkan record yang dibuat oleh Certbot.

Konfigurasi NGINX Lanjutan

Ada konfigurasi lanjutan agar NGINX-nya mendukung penggunaan SSL. Saya sempat bermasalah di bagian ini karena salah dalam penulisan teks dan juga penempataannya.
File konfigurasi (default) untuk hal ini terletak di /etc/nginx/sites-available/default.
Ada dua blok utama yang perlu diperhatikan dari file konfigurasi ini. Yaitu blok untuk port 80 (untuk redirect HTTP ke HTTPS) dan juga port 443.
Berikut contoh bagian dari file tersebut:

server {
   listen 80;
   server_name nginx.zaidan.web.id;
   return 301 https://$host$request_uri;
}
server {
   listen 443 ssl;
   server_name nginx.zaidan.web.id;
   ssl_certificate /etc/letsencrypt/live/nginx.zaidan.web.id/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/nginx.zaidan.web.id/privkey.pem;
   root /var/www/html;
   index index.html index.htm;
   location / {
    try_files $uri $uri/ =404;
   }
}
  • Blok pertama (port 80) berfungsi untuk menyatakan bahwa blok tersebuit digunakan untuk menangani trafik HTTP
  • server_name nginx.zaidan.web.id;, artinya sistem hanya akan memproses permintaan untuk domain tersebut.
  • return 301 https://$host$request_uri;, untuk mengarahkan permintaan HTTP ke HTTPS.
  • Blok kedua (port 443) digunakan untuk konfigurasi HTTPS-SSL.
  • ssl_certificate & ssl_certificate_key digunakan untuk mengarahkan ke file SSL dan private key (dalam hal ini, yang diterbitkan oleh Let’s Encrypt).
  • root & index digunakan untuk mengarahkan ke file website dan indeks (default directory).

Uji Konfigurasi

Kita perlu tes konfigurasinya dan restart NGINX:

nginx -t
systemctl reload nginx

Gambar di bawah ini menampilkan konfigurasi yang sudah berhasil (tampilan di web browser).

image host 

Untuk tulisan kali ini sampai di sini dulu ya. Sampai jumpa. Bye.

Leave a Reply

Your email address will not be published. Required fields are marked *