Lagi berkaca dari sebuah kecelakan, Yap minggu pagi lagi senyap-senyapnya dan masih ‘layahan’ di tempat tidur, tetiba banyak notifikasi chats dari group.
Mendapat complaint bahwa Email di tempat saya bekerja tidak dapat di gunakan khusus nya dari aplikasi email client seperti Thunderbird, Outlooks dan kawan kawan nya meski via browser masih bisa di akses dengan adanya warning bahwa sites tidak aman.
Langsung cek ternyata benar bahwa SSL untuk Email expire, loh kok bisa tidak ada notif pemberitahuan sebelumnya dari pihak penyedia jasa penjual SSL?
Segera kontak provider ssl untuk reissue ssl-nya dan sekalian tanya kenapa tidak ada reminder untuk ssl akan segera expire, ternyata sedang ada problem di sisi sistem penyedia jasa SSL sehingga Invoice yang biasa nya di kirim satu bulan sebelum masa ssl habis ini tidak ada.

Nah berkaca dari sana mengapa saya tidak membuat Notif sendiri.
Hmmmm oke initinya dari script sederhana ini adalah akan mengecek semua domain yang saya daftarkan dan bila masa Expire ssl nya kurang dari atau sama dengan 21 hari (3 minggu) maka system akan mengirimkan email bahwa ssl untuk domain bersangkutan akan segera Expire.

Pada script ini saya memanfaatkan dari EPOC TIME. sangat simpel logika yang saya gunakan (padahal saya melakukan beberapa kali percobaan agar didapat hasil yang saya inginkan wkwkw).

#!/usr/local/bin/perl -w
use strict;
use Time::Local;

my %months =(Jan => 1,
        Feb => 2,
        Mar => 3,
        Apr => 4,
        May => 5,
        Jun => 6,
        Jul => 7,
        Aug => 8,
        Sep => 9,
        Oct => 10,
        Nov => 11,
        Dec => 12);

my @domains = ("domain1", "domain3", "next-domain");
        foreach my $domain (@domains) {
                my @cek_ssls = qx/echo | openssl s_client -servername $domain -connect $domain:443 2>\/dev\/null | openssl x509 -noout -dates/; shift(@cek_ssls);
                foreach my $cek_ssl (@cek_ssls) {
                        chomp $cek_ssl;
                        my ($bulans_expire, $tanggal_expire, $jams, $tahun_expire) =  split(/\s+/, $cek_ssl);
                        my $bulan_expire = substr($bulans_expire, 9);
                        my $bulan_expire_epoc = $months{$bulan_expire} - 1;
                        my ($hour, $min, $sec) = split(/:/, $jams);

                        my $today_epoc = time();
                        my $expire_epoc = timelocal($sec, $min, $hour, $tanggal_expire, $bulan_expire_epoc, $tahun_expire);
                        my $expire_left_epoc = $expire_epoc -  $today_epoc;
                        my $expire_left = $expire_left_epoc / 86400;
                        my $expire_day = int($expire_left);

                        my $isi= "SSL Untuk Domain $domain akan expire $expire_day hari lagi segera buat PO sysadmin";
                        if ($expire_day <= 21){
                        system("echo '$isi' | /usr/bin/mail -s 'SSL $domain ' servant\@xxx.net.id");
                        print "SSl Untuk Domain $domain akan expire $expire_day hari lagi\n";
                    }

Lalu saya gunakan scheduler (crontab) untuk menjalankan script tersebut, pada kasus ini saya jalankannya setiap hari pada jam 08:00.

notif

Berikut ini notif yang saya terima ketika ada SSL yang akan expire.

notif email