Чтобы узнавать об этом заранее, я решил набросать небольшой скрипт, который проходится по хранилищу сертификатов и проверяет их "годность" (TinyCA хранит сертификаты в каталоге ~/.TinyCA/CAName/certs).
Выходит, что для проверки достаточно пройтись по всем ~/.TinyCA/CAName/certs/*.pem файлам. Нагуглил скрипт на perl, который проверяет срок действия сертификата. Скрипт завершается с кодом 2, если сертификат просрочен, с кодом 1, если истечет в течении двух недель и с нулевым, если с сертификатом все в порядке.
Далее дописал обвязку для крона, который проверяет сертификаты из ~/.TinyCA/CAName/certs
check-certificate-expire - проверка единичного сертификата
#!/bin/sh openssl_get_CN_from_file() { if [ ! -f "$1" ]; then echo "Unable to find file: $1" return 1 fi X509_CN=`openssl x509 -in "$1" -noout -subject | perl -pi -e 's/^.*\/?CN=([^\/]*).*$/\1/'` echo $X509_CN } if [ ! -f "$1" ]; then echo "Unable to find file: $1" exit 1 fi check-expire -f /usr/local/etc/check-expire.cfg openssl_x509 -in "$1" case $? in 1) X509_CN=`openssl_get_CN_from_file "$1"` if [ ! -z "$X509_CN" ]; then echo "$X509_CN: certificate expires soon" else echo "$1: certificate expires soon" fi ;; 2) X509_CN=`openssl_get_CN_from_file "$1"` if [ ! -z "$X509_CN" ]; then echo "$X509_CN: certificate expired!" else echo "$1: certificate expired!" fi ;; esac
check_tinyca_certs - проверка сертификатов из директории
#!/bin/sh if [ ! -d "$1" ]; then echo "Unable to find directory: $1" exit 1 fi for sslcert in "$1"/*.pem do if [ -f "$sslcert" ]; then check-certificate-expire "$sslcert" else echo "File $sslcert not found" fi done
Конфиг для скрипта check-expire
<class default> <expired> exit_value 2 </expired> <window> inside 2w exit_value 1 </window> </class>
Комментариев нет:
Отправить комментарий