57 lines
1.6 KiB
Bash
Executable file
57 lines
1.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Author: Oliver Ladner <oli@lugh.ch>
|
|
# License: LGPL
|
|
#
|
|
# Recursively search for SSL certificate
|
|
# files and display valid period
|
|
#
|
|
# Won't run on Solaris without modifications (find, date etc)
|
|
|
|
# We need arguments
|
|
if [ "$1" = "-h" -o "$1" = "--help" ]; then
|
|
echo -e "Usage: `basename $0` [option] [path]"
|
|
echo -e "Options: -v\tonly show valid certs\r"
|
|
echo -e " -e\tonly show expired certs"
|
|
exit
|
|
fi
|
|
|
|
# probably(tm) too complicated ;-)
|
|
if [ "$1" = "-e" ]; then
|
|
ONLY_EXPIRED=TRUE
|
|
MYPATH="$2"
|
|
elif [ "$1" = "-v" ]; then
|
|
ONLY_VALID=TRUE
|
|
MYPATH="$2"
|
|
else
|
|
if [ ! -z $1 ]; then
|
|
if [ "$2" = "-e" ]; then
|
|
ONLY_EXPIRED=TRUE
|
|
elif [ "$2" = "-v" ]; then
|
|
ONLY_VALID=TRUE
|
|
else
|
|
ONLY_VALID=FALSE
|
|
ONLY_EXPIRED=FALSE
|
|
fi
|
|
MYPATH=$1
|
|
else
|
|
MYPATH="."
|
|
ONLY_VALID=FALSE
|
|
ONLY_EXPIRED=FALSE
|
|
fi
|
|
fi
|
|
|
|
FOO=`find $MYPATH -type f -iname "*.crt*" | grep -v '.svn'`
|
|
for i in `echo $FOO`; do
|
|
MYPATH=$(dirname $i)
|
|
MYFILE=$(basename $i)
|
|
|
|
# date conversion
|
|
DATE_STRING=$(openssl x509 -text -in $i | grep 'Not After' | awk -F": " '{print $2}')
|
|
NOT_AFTER=$(date -d "$DATE_STRING" +%s)
|
|
UNIX2HUMAN=$(date -d "1970-01-01 $NOT_AFTER sec" +%c)
|
|
if [ $NOT_AFTER -le $(date +%s) ]; then
|
|
if [ $ONLY_EXPIRED ]; then echo "$MYPATH/$MYFILE" && echo "Certificate expired $UNIX2HUMAN"; fi
|
|
else
|
|
if [ $ONLY_VALID ]; then echo "$MYPATH/$MYFILE" && echo "Certificate is valid"; fi
|
|
fi
|
|
done
|