Mencari Selisih Jumlah Hari Antara Dua Tanggal pada Bash Scripting

Beberapa waktu lalu lagi bikin projek yang melibatkan protokol HTTPS. Seperti yang kita tahu bahwa HTTPS merupakan protokol yang melindungi data HTTP selama proses transmisi dengan menggunakan sertifikat dan/atau key SSL. Karena tidak sembarang sertifikat yang dapat dikenali oleh browser, maka umumnya kita harus membeli sertifikat tersebut ke penyedia sertifikat SSL dan biasanya masa berlaku SSL tersebut adalah 1 tahun.

Alternatif versi gratisnya adalah dengan menggunakan Let's Encrypt  (artikel ini jauh dari pembahasan SSL dan Let's Encrypt). Sayang sekali Let's Encrypt hanya memberikan durasi waktu kurang lebih 3 bulan dalam satu periode permintaan sertifikat. Masalah ini yang menjadi latar belakang bagaimana kita bisa mengetahui tanggal kadaluarsa domain dan memberikan semacam alert pada hari yang telah ditentukan sebelum jatuh tempo.

Diketahui bahwa Let's Encrypt menyimpan certificate dan private key di direktory /etc/letsencrypt/live/<domain> dengan nama keychain.pem untuk certificate dan privkey.pem untuk private key nya. Informasi nama domain, tanggal pembuatan dan tanggal kadaluarsa dari SSL certificate disimpan di dalam keychain.pem dengan format public key x509 yang telah dilakukan encoding oleh OpenSSL.

Tugas pertama kita adalah melakukan decoding pada file tersebut. Decoding dapat dilakukan dengan cara perintah openssl x509 -text -in /etc/letsencrypt/live/<domain>/keychain.pem. Maka kita akan dapat melihat informasi sertifikat SSL dengan format x509. Apabila diperhatikan, akan terdapat field Not Before , Not After dan Subject: CN yang berisi secara berturut berturu tanggal pembuatan, tanggal kadaluarsa dan nama domain. Kita hanya membutuhkan field Not After sebagai acuan alert, sedangkan nama domain dan tanggal pembuatan domain bisa digunakan untuk informasi tambahan.


Tugas selanjutnya adalah melakukan filter dan trim pada ketiga field tersebut. Pada proses filter akan dilakukan penyaringan string menggunakan tool grep dengan beserta keyword yang diinginkan. Input string nya bisa didapatkan dari output decoding dari proses sebelumnya (gunakan pipe untuk menggabungkan). Sebagai contoh, kita menggunakan string Not After maka baris yang mengandung string Not After akan dicetak.


Hasil dari output diatas tidak dapat diproses karena masih mengandung string yang tidak dibutuhkan. Karakter-karakter yang harus dibuang dapat di-trim dengan bantuan sed. Sebagai contoh kita diharuskan membuang indentation awal beserta string Not After sehingga hasil akhirnya hanya tanggal saja.


Selanjutnya adalah merubah tanggal menjadi format yang countable (merubahnya menjadi detik) dengan bantuan date. Anda juga bisa merubahnya terlebih dahulu menjadi format default date agar string yang diproses bisa lebih konsisten.


Jangan lupa merubah format dari tanggal saat ini ke format yang countable juga dan membanding kedua bilangan tersebut.


Hasil dari pembadingan dua tanggal tersebut dibagi dengan 86400 (jumlah detik dalam 24 jam) akan menghasilkan selisih jumlah hari


Terakhir, kita bisa melakukan push notification pada service yang diinginkan misalkan bot whatsapp atau bot Telegram.

Itu saja untuk artikel kali ini. Cheers!

Tidak ada komentar:

Posting Komentar

Terima kasih telah berkunjung.

Mencari Selisih Jumlah Hari Antara Dua Tanggal pada Bash Scripting

Beberapa waktu lalu lagi bikin projek yang melibatkan protokol HTTPS. Seperti yang kita tahu bahwa HTTPS merupakan protokol yang melindungi ...