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.
Tidak ada komentar:
Posting Komentar
Terima kasih telah berkunjung.