Cara mengamankan Nginx dengan Let’s Encrypt pada CentOS 7

Let’s Encrypt adalah sebuah Certificates Authority (CA) yang menyediakan sertifikat SSL secara mudah dan gratis, hampir semua browser sudah mendukung sertifikat dari Let’s Encrypt. Let’s Encrypt sendiri dikembangkan oleh Internet Security Research Group (ISRG).

Let’s Encrypt juga menyediakan tool yang memudahkan kita dalam melakukan permintaan sertifikat SSL pada domain menggunakan Certbot, yang membantu kita untuk otomasi langkah-langkah dalam permintaan SSL untuk domain.

Pada tulisan ini kita akan melakukan instlasi Let’s Encrypt untuk server Nginx kita pada CentOS 7.

Kebutuhan

1 – Instalasi klien Certbot Let’s Encrypt

Certbot digunakan untuk melakukan permintaan sertifikat SSL. Untuk melakukan instalasi kita menggunakan repositori EPEL.

$ sudo yum install epel-release

Setelah instalasi selesai, kita lanjutkan dengan melakukan instalasi certbot-nginx

$ sudo yum install certbot-nginx

Tunggu hingga proses instalasi selesai.

2 – Permintaan Sertifikat SSL

Kita akan menggunakan certbot untuk melakukan permintaan SSL, dengan plugin Nginx pada certbot yang sudah kita instalasi. Jalankan perintah dibawah ini :

$ sudo certbot --nginx -d henri.web.id

Jika pertama menjalankan certbot, maka kita akan diminta untuk memasukan alamat email dan menyetujui aturan dari Let’s Encrypt. Kemudian certbot akan melakukan komunikasi dengan Let’s Encrypt server dan melakukan cek verifikasi domain yang akan diaktifkan SSL nya.

Jika berhasil, maka kita akan diminta bagaimana HTTPS akan dijalankan :

Please choose whether HTTPS access is required or optional.
------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Pilihan 1, kedua koneksi HTTP dan HTTPS aktif, domain kita bisa diakses dari dua koneksi.

Pilihan 2, Semua koneksi akan dialihkan ke HTTPS.

Kita diminta untuk memasukan pilihan 1 atau 2. Selanjutnya cerbot akan melakukan konfigurasi pada Nginx dan melakukan reload.

Untuk melakukan tes SSL, dapat dilakukan pada pada website SSL Lab Test.

3 – Memperbaharui kunci Diffie-Hellman

Kita dapat menambahkan tingkat keamanan pada kunci Diffie-Hellman untuk keamanaan yang lebih tinggi.

Pertama, kita membuat dhparam dengan openssl :

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Tunggu hingga proses pembuatan selesai. Kemudian kita lakukan edit pada konfigurasi Nginx pada server blok.

$ sudo vi /etc/nginx/nginx.conf

Dan kita masukan kunci dhparam pada konfigurasi server Nginx kita :

. . .
ssl_dhparam /etc/ssl/certs/dhparam.pem;

Simpan dan lakukan pengecekan konfigurasi Nginx :

$ sudo nginx -t

Jika konfigurasi sudah OK, tidak ada pesan kesalahan. Kita lakukan reload Nginx :

$ sudo systemctl reload nginx

4 – Konfigurasi pembaruan otomatis

Sertifikat Let’s Encrypt hanya valid selama 90 hari. Jadi kita harus melakukan pembaharuan secara otomatis. Kita akan menjalan perintah secara reguler untuk mengecek kadaluarsa dan melakukan pembaharuan otomatis.

Kita akan menggunakan perintah cron, yang bertugas menjalan perintah secara periodik, untuk konfigurasi, kita melakukan edit pada file crontab. Bisa dilakukan dengan perintah :

sudo crontab -e

crontab akan membuka editor, silahkan masukan kode dibawah ini :

. . .
15 3 * * * /usr/bin/certbot renew --quiet

Kode 15 3 * * * maksudnya adalah jalankan perintah ini setiap hari pada jam 03:15.

Opsi renew pada perintah certbot diatas akan melakukan pengecekan seluruh sertifikat yang terpasang dan melakukan update jika sertifikat akan habis dalam 30 hari. Opsi --quiet digunakan untuk menajalankan certbot tanpa mengeluarkan informasi atau menunggu input dari pengguna.

Demikianlah cara mengamankan Nginx menggunakan Let’s Encrypt pada CentOS 7.

Leave a Reply

Silahkan isi perhitungan di bawah ini : *