Instalasi dan Konfigurasi Nginx Hingga Menggunakan SSL


Banyak web server yang dapat digunakan dalam melakukan hosting website. Web server berperan sangat penting agar website bisa berjalan dengan baik. Memilih web server dengan performa yang handal sebelum melakukan hosting adalah hal yang tepat untuk dilakukan. Nginx (dibaca: engine-ex) merupakan salah satu web server terpopuler yang menjadi pilihan untuk hosting website. Banyak platform hosting yang menggunakan Nginx sebagai web servernya.

Nginx banyak diminati karena ringan tetapi memiliki performa yang sangat baik. Bahkan Nginx tidak hanya berfungsi sebagai web server. Nginx juga dapat difungsikan sebagai reverse proxy yang berguna untuk penyeimbangan trafik, pengalihan trafik, dan keamanan. Maka dari itu, artikel ini akan membahas, bagaimana cara melakukan instalasi Nginx dan konfigurasinya, hingga membuat protokol yang digunakan terenskripsi sehingga website kita menjadi lebih aman.

Langkah 1. Instalasi Nginx

Untuk melakukan instalasi web server Nginx, jalankan perintah :

apt install nginx -y

Kemudian akses IP address web server menggunakan browser:

Maka akan muncul tampilan default page dari web server nginx.

Langkah 2. Konfigurasi Default Page Web Server Nginx

Selanjutnya konfigurasi nginx untuk memunculkan laman buatan sendiri. Untuk itu, akses file konfigurasi default:

vim /etc/nginx/sites-available/default

Secara default, nginx mengambil page di dalam direktori /var/www/html yang memiliki nama index atau file yang berformat .html atau .htm. Sebagai contoh, pada langkah ini akan dilakukan perubahan agar nginx menampilkan para direktori buatan sendiri. Konfigurasi seperti di bawah ini:

root /var/www/nama_direktori

#contoh:
root /var/www/amarApp

Konfigurasi tersebut berarti mengubah direktori yang diakses oleh nginx menjadi direktori amarApp/ yang berada di dalam direktori /var/www/. Setelah itu, buat direktori dan gunakan nama direktori yang sama dengan konfigurasi pada nginx sebelumnya:

mkdir /var/www/nama_direktori

#contoh:
mkdir /var/www/amarApp

Kemudian ubah kepemilikan direktori yang dibuat menjadi milik web server dengan perintah:

chown -R www-data:www-data /var/www/nama_direktori/

#contoh:
chown -R www-data:www-data /var/www/amarApp/

Ubah juga izin akses dari direktori tersebut:

chmod -R  754 /var/www/nama_direktori

#contoh:
chmod -R  754 /var/www/amarApp/

Buat file index.html yang akan ditamilkan pada web browser:

vim /var/www/amarApp/index.html

Kemudian isi file tersebut dengan konten yang diinginkan, sebagai contoh masukkan kode sederhana html:

<html>
<head>
<title>Aplikasi Nginx - amar</title>
</head>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Hi! Ini Aplikasi Amar
</div>
</body>
</html>

Setelah itu, muat ulang service Nginx agar konfigurasi dan konten yang telah dibuat terbarui:

systemctl restart nginx

Akses kembali IP address server Nginx untuk melihat hasilnya:

Jika diakses muncul konten yang telah dibuat pada direktori buatan sendiri, maka sampai pada tahap ini konfigurasi telah berhasil.

SSL

Secara singkat, SSL (Secure Sockets Layer) adalah teknologi pada pengembangan web yang berfungsi untuk mengamankan komunikasi antara website yang berada di server, dengan web browser yang digunakan oleh user untuk mengaksesnya. Dengan SSL ini, komunikasi yang dibangun terenkripsi sehingga mencegah pihak lain untuk melakukan interupsi atau pencurian. Karena pada dasarnya, enkripsi berarti membuat suatu informasi menjadi kode acak rahasia, sehingga tidak dapat dibaca pihak lain tanpa menggunakan kunci rahasia. Maka SSL sangat penting untuk digunakan agar website beroperasi dengan lebih aman.

Pada awalnya, secara default web site hanya menggunakan protokol HTTP yang mana tidak ada proses enkripsi ketika melakukan akses. Dengan menggunakan SSL ini, protokol yang digunakan berubah menjadi HTTPS atau HTTP Secure yang berarti protokol dengan proses pengamanan. Website atau situs yang menggunakan SSL biasanya memiliki tanda gembok pada search bar atau kolom URL browser ketika kita mengaksesnya.

Setelah mengetahui tentang SSL, mari kita lakukan langkah-langkah konfigurasi SSL pada Nginx, agar website yang kita miliki menjadi lebih aman.

Konfigurasi SSL Menggunakan OpenSSL

Langkah 1. Install OpenSSL

apt install openssl

Pada umumnya openssl sudah terpasang, namun jika belum terinstal, jalankan perintah di atas.

Langkah 2. Buat Certificate Authority

Selanjutnya, buat private key yang nantinya digunakan oleh web server sebagai kunci sertifikat. Maksudnya web server akan melakukan validasi melalui kunci tersebut apakah koneksi yang dibangun dapat melewati enkripsi atau tidak. Untuk membuat private key jalankan perintah:

openssl genrsa -out CA.key 2048

Kemudian buat certificate authority atau sertifikat otoritas yang digunakan sebagai enkripsi yang nantinya dipasang pada web server. Untuk membuat certificate authority jalankan perintah:

openssl req -new -x509 -days 365 -key CA.key -out CA.crt

Maka terdapat field yang diminta untuk mengisinya. Jika ingin mengosongi field tersebut, maka masukkan dot(.). Namun, untuk Common Name wajib diisi dengan IP address dari web server atau domainnya jika menggunakan DNS. Kemudian gunakan perintah ls untuk melihat apakah private key dan sertifikat yang dibuat sudah ada:

Langkah 3. Buat Certificate Sever

Buat permintaan:

openssl req -new > issued-crt.req -nodes

Seperti pada pembuatan certificate authority, common name diisi dengan IP address web server atau domainnya. Kemudian, untuk A challenge password dan optional company name dikosongkan saja dengan tekan enter. Setelah itu, buat RSA key yang berfungsi sebagai enkripsi dengan menjalankan perintah:

openssl rsa -in privkey.pem -out issued-key.key

Tahap terakhir buat sertifikat pencocokan:

openssl x509 -req -in issued-crt.req -signkey issued-key.key -CA CA.crt -CAkey CA.key -days 200 -out wildcard.indo.crt -CAcreateserial

Dengan menjalankan perintah di atas, seperti halnya menandatangani sertifikat yang artinya setuju untuk memberikan akses yang terenkripsi pada webserver. Kemudian pindah semua file SSL ke dalam direktori /etc/ssl agar nantinya tidak hilang. Untuk memindahkan file-file tersebut jalan perintah:

mv CA.key CA.crt CA.srl issued-crt.req issued-key.key privkey.pem wildcard.indo.crt /etc/ssl/

Kemudian buka file konfigurasi virtual host untuk memasang SSL pada website:

vim /etc/nginx/sites-available/default

ssl_certificate /etc/ssl/CA.cert;
ssl_certificate_key /etc/ssl/CA.key;

Ubah konfigurasi pada file virtual host menjadi listen 433. Artinya website tersebut dikonfigurasi untuk diakses melalui port 443 yang merupakan port SSL. Kemudian tambahkan konfigurasi default_server, agar SSL dengan port 443 ini dijadikan sebagai server utama untuk diakses. Tambahkan juga konfigurasi ssl_certificate dan ssl_certificate_key beserta letak filenya. Setelah memasang SSL pada virtual host, periksa konfigurasi Nginx dengan perintah:

nginx -t

Maka akan ada pesan ok successful yang menandakan bahwa penulisan konfigurasi berhasil dan bisa dibaca oleh sistem Nginx.

Langkah 4. Pengujian

Setelah selesai melakukan pemasangan SSL, akses website dengan akses IP address Server Nginx melalui browser dengan https:

https://IP-Address-Server

contoh:
https://10.23.2.27

Maka akan ada tampilan peringatan bahwa koneksi tidak privat. Hal tersebut tidak mengapa karena sertifikat SSL yang digunakan merupakan SSL yang diambil secara gratis. Klik Advance dan kemudian klik lanjutkan ke IP Address untuk mengakses website.

Maka akan muncul konten webstie yang ada dengan akses https. Sampai sini pemasangan SSL menggunakan OpenSSL telah selesai dan sukses.

Kesimpulan

Pada era digital sekarang ini, web site merupakan hal yang bisa dikatakan sebagai kebutuhan wajib bagi kebanyakan orang. Entah untuk bisnis, membangun profil, administrasi, dan banyak hal lagi yang semuanya beralih menjadi sistem digital. Maka, web server yang menjadi piranti untuk mewujudkan website tersebut menjadi perhatian lebih bagi orang yang mengembangakan website secara langsung. Terdapat banyak pilihan web server yang dapat digunakan, dari web server yang berasal dari sistem operasi windows, hingga web server dari linux. Pemilihan web server juga menjadi hal yang penting agar web site bisa beroperasi dengan baik. Nginx dapat menjadi piihan web server karena penggunaannya yang ringan dan banyaknya fungsi hingga menjadi sebuah reverse proxy. Selain itu, keamanan sebuah website juga menjadi aspek yang perlu diperhatikan. SSL menjadi solusi agar website beroperasi dengan aman tanpa gangguan dari pihak yang tidak bertanggung jawab.

Tertarik mengikuti training di ID-Networkers? Kami menyediakan berbagai pilihan training yang bisa kamu ikuti. Klik disini untuk info lengkapnya.