Dengan openssl
:
openssl x509 -enddate -noout -in file.pem
Outputnya ada di formulir:
notAfter=Nov 3 22:23:50 2014 GMT
Lihat juga jawaban MikeW untuk cara mudah memeriksa apakah sertifikat telah kedaluwarsa atau belum, atau apakah akan dalam jangka waktu tertentu, tanpa harus mengurai tanggal di atas.
Jika Anda hanya ingin mengetahui apakah sertifikat telah kedaluwarsa (atau akan habis dalam N detik berikutnya), -checkend <seconds>
opsi untuk openssl x509
akan memberi tahu Anda:
if openssl x509 -checkend 86400 -noout -in file.pem
then
echo "Certificate is good for another day!"
else
echo "Certificate has expired or will do so within 24 hours!"
echo "(or is invalid/not found)"
fi
Ini menghemat Anda harus melakukan perbandingan tanggal/waktu sendiri.
openssl
akan mengembalikan kode keluar 0
(nol) jika sertifikat belum kedaluwarsa dan tidak akan berlaku selama 86400 detik berikutnya, dalam contoh di atas. Jika sertifikat akan kedaluwarsa atau sudah melakukannya - atau beberapa kesalahan lain seperti file yang tidak valid/tidak ada - kode pengembaliannya adalah 1
.
(Tentu saja, ini mengasumsikan waktu/tanggal diatur dengan benar)
Ketahuilah bahwa versi openssl yang lebih lama memiliki bug yang berarti jika waktu ditentukan dalam checkend
terlalu besar, 0 akan selalu dikembalikan (https://github.com/openssl/openssl/issues/6180).
Inilah baris perintah bash saya untuk mencantumkan beberapa sertifikat dalam urutan kedaluwarsanya, yang terakhir kedaluwarsa terlebih dahulu.
for pem in /etc/ssl/certs/*.pem; do
printf '%s: %s\n' \
"$(date --date="$(openssl x509 -enddate -noout -in "$pem"|cut -d= -f 2)" --iso-8601)" \
"$pem"
done | sort
Keluaran sampel:
2015-12-16: /etc/ssl/certs/Staat_der_Nederlanden_Root_CA.pem
2016-03-22: /etc/ssl/certs/CA_Disig.pem
2016-08-14: /etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_S.pem