Menggunakan Sertifikat Let’s Encrypt SSL/TLS (Gratis) dengan Nginx pada CentOS 8

Sudah dipastikan bahwa enkripsi SSL/TLS yang ada di web kalian akan membuat web kalian menjadi lebih tinggi hasilnya pada hasil pencarian dan membuat pengguna yang mengaksesnya menjadi sedikit lebih aman. Namun, ada beberapa penghalang yang terkadang membuat pemilik web mengaplikasikan SSL/TLS dalam website mereka.

2 penghalang yang paling besar adalah biaya dan proses manual dalam mendapatkan sertifikat tersebut. Tepi sekarang, dengan Let’s Encrypt, Kedua hal tersbeut bukan lagi menjadi masalah. Let’s Encrypt membuat enkripsi SSL/TLS menjadi gratis untuk semua orang.

Apa sih Let’s Encrypt itu? Merupakan sebuah Certification Authority (CA) yang menyediakan sertifkat sertifikat SSL/TLS secara gratis. Sertifikat yang dikeluarkan oleh Let’s ENcrypt sudah dipercaya oleh hampir semua browser sekarang ini, termasuk browser yang sudah tua seperti Internet Explorer di Windows XP SP3. Sebagai tambahan, Let’s Encrypt sudah sepenuhnya otomatis, baik dalam hal penerbitan atau pembaruan sertifikat.

Lalu bagaimana caranya menggunakan Let’s Encrypt pada Nginx yang berjalan di atas CentOS 8 Server? Berikut ini hasil percobaan yang saya lakukan.

Persyaratan

  1. Memiliki Nginx yang terpasang di atas CentOS 8 Server.
  2. Memiliki akses penuh terhadap nama domain yang ingin dipasangkan sertifikat SSL/TLS.
  3. Membuat DNS Record yang terhubung dengan nama domain dan IP publik server kalian

Tahapan

1. Memasang klien Certbot Let’s Encrypt

Pertama, kalian harus masuk terlebih dahulu ke server CentOS 8 kalian dengan perintah:

ssh <user>@<Server_IP>

Paket Certbot tidak otomatis tersedia secara default dalam pakcage manager. Untuk itu kalian harus menambahkan repository EPEL untuk memasang Certbot. Caranya:

sudo dnf install epel-release
Menambahkan repository epel

Ketika ditanyakan konfirmasi untuk melakukan instalasi, ketik Y.

Sekarang kalian sudah memiliki akses ke repositori tambahan tersebut. Install beberapa paket yang dibutuhkan berikut:

sudo dnf install certbot python3-certbot-nginx
Instalasi Certbot dan plugin nginx untuk Certbot

Perintah di atas akan memasang Certbot dan plugin Nginx untuk Certbot, yang mana dibutuhkan untuk menjalankan program.

Proses instalasi akan menanyakan kalian tentang mengimpor GPG Key. Konfirmasi hal tersebut sehingga instalasi dapat diselesaikan. Sekarang kalian sudah memasang klien Let’s Encrypt.

Paket Let’s Encrypt sudah terpasang

Namun sebelum mendapatkan sertifikat, kalian terlebih dahulu harus memastikan semua port yang dibutuhkan sudah terbuka. Untuk melakukan hal tersebut, kalian perlu mengupdate pengaturan firewall pada tahap selanjutnya.

2. Mengupdate Pengaturan Firewall

Untuk menggunakan Certbot, pastikan port http dan https terbuka. Cara untuk membukanya di firewall adalah dengan menjalankan perintah:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
membuka port http dan https

Sekarang kalians sudah siap untuk menjalankan Certbot dan mendapatkan sertifikat.

3. Memperoleh Sertifikat

Sekarang kalian dapat melakukan permintaan penerbitan sertifikat SSL untuk domain kalian.

Ketika mengeluarkan sertifikat SSL untuk NGINX menggunakan klien Certbot, klien tersebut akan secara otomatis memperoleh sertifikat tersebut dan memasang sertifkat SSL yang baru dan valid untuk domain yang yang dimasukkan ke dalam parameter. Caranya:

sudo certbot --nginx -d <domain_kalian> -d www.<domain_kalian>
memperoleh sertifikat

Sertifikat yang dihasilkan berada di sebuah direktori setelah nama domain kalian pada direktori /etc/letsencrypt/live.

4. Memasang Sertifikat

Usai mendapatkan sertifikat SSL, tahap selanjutnya adalah memasangnya. Letakkan sertifikat tadi di dalam konfigurasi Nginx seperti berikut:

meletakkan sertifikat ke dalam konfigurasi Nginx

Jika sudah. Uji konfigurasi nginx terlebih dahulu dan kemudian restart service nginx. Caranya:

nginx -t
service nginx restart
service nginx status
restart service nginx

Sekarang sudah selesai menggunakan Certbot, kalian bisa memeriksa status SSL sertifikat. Verifikasi status sertifikatnya dengan membuka link berikut pada browser kalian.

https://www.ssllabs.com/ssltest/analyze.html?d=domain_kamu
Hasil cek di SSLLabs

Kalian sudah bisa mengakses web kalian dengan awalan https. Namun, kalian harus memperbarui sertifikat secara rutin untuk membuatnya tetap berjalan. Dalam tahap berikutnya, kalian akan tahu cara memperbaruinya secara otomatis.

5. Pengaturan Auto-Renewal

Sertifikat Let’s Encrypt valid untuk 90 hari, tapi sangat direkomendasikan untuk kalian memperbaruinya setiap 60 jari untuk memberi toleransi pada margin of error. Klien Certbot Let’s Encrypt memiliki perintah renew yang secara otomatis memeriksa status sertifikat yang terinstal dan mencoba untuk memperbarui jika masa aktifnya kurang dari 30 hari waktu kadaluarsa.

Sebelum mengaplikasikanya, kalian bisa mengujicoba terlebih dahulu. Caranya:

sudo certbot renew --dry-run
Ujicoba renew certbot

Cara paling praktis untuk memastikan sertifikat kalian tidak kadaluarsa adalah dengan membuat cronjob yang secara periodik akan menjalankan perintah pembaruan sertifikat secara otomatis untuk kalian.

Karena eksekusi pembaruan sertifikat hanya dilakukan jika waktunya kurang dari 30 hari, akan lebih aman jika pemeriksaan dilakukan setiap minggu atau bahkan setiap hari.

Untuk membuat crontab yang akan memeriksa kadaluarsa sertifikat setiap siang, edit crontab dan tambahkan konfigurasi berikut:

crontab -e

Isinya:

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

Jika sudah selesai, simpan dan tutup file konfigurasinya. Perintah renew akan memeriksa semua sertifikat yang terpasang pada sistem dan mengupdate setiap sertifikat yang akan kadaluarsa dalam waktu kurang dari 30 hari.

*****

Itu tadi cara menggunakan sertifikat SSL/TLS Let’s Encrypt untuk server kalian. Semoga tulisan ini berguna ya.

Tulisan ini juga bertujuan untuk menggantikan tutorial lama (DI SINI) yang sudah tak lagi berlaku.

Facebook Comments Box