1+ #! /bin/bash
2+
3+ chkdata () {
4+ F=$1
5+ CRT=$2
6+ KEY=$3
7+ if [[ " $CRT " != " " && " $KEY " != " " ]] ; then
8+ if [[ ! -f " $CRT " ]] ; then
9+ echo " [WARN] CERTIFICATE FILE ${CRT} MISSING FOR ${F} " ;
10+ else
11+ echo -n " Checking ${CRT} " ;
12+ CHK=$( openssl x509 -in " ${CRT} " -text -noout > /dev/null 2>&1 ; echo $? ) ;
13+ if [[ $CHK -ne 0 ]] ; then
14+ echo " FAILED!" ;
15+ else
16+ echo " OK" ;
17+ fi
18+ fi
19+ if [[ ! -f " $KEY " ]] ; then
20+ echo " [WARN] KEY FILE ${KEY} MISSING FOR ${F} " ;
21+ else
22+ echo -n " Checking ${KEY} " ;
23+ CHK=$( openssl rsa -in " ${KEY} " -check -noout > /dev/null 2>&1 ; echo $? ) ;
24+ if [[ $CHK -ne 0 ]] ; then
25+ echo " FAILED!" ;
26+ else
27+ echo " OK" ;
28+ fi
29+ fi
30+
31+ if [[ -f " $CRT " && -f " $KEY " ]] ; then
32+ echo -n " Checking that key and certificate match" ;
33+ MDCRT=$( openssl x509 -noout -modulus -in " ${CRT} " | openssl md5) ;
34+ MDKEY=$( openssl rsa -noout -modulus -in " ${KEY} " | openssl md5) ;
35+ if [[ " $MDCRT " != " $MDKEY " ]] ; then
36+ echo " FAILED!" ;
37+ else
38+ echo " OK" ;
39+ fi
40+ fi
41+ echo " ---" ;
42+ elif [[ " $CRT " != " " || " $KEY " != " " ]] ; then
43+ echo " [WARN] Check SSL config of ${F} " ;
44+ echo " ---" ;
45+ fi
46+ }
47+
48+ if [[ -d /etc/apache2/sites-enabled ]] ; then
49+ echo " Checking enabled apache vhosts" ;
50+ for FIL in /etc/apache2/sites-enabled/* ; do
51+ CRT=$( grep ' SSLCertificateFile' " ${FIL} " | grep -E -v ' ^[[:space:]]*#' | awk ' {print $2}' | head -n 1) ;
52+ KEY=$( grep ' SSLCertificateKeyFile' " ${FIL} " | grep -E -v ' ^[[:space:]]*#' | awk ' {print $2}' | head -n 1) ;
53+ chkdata " $FIL " " $CRT " " $KEY " ;
54+ done
55+ fi
56+
57+ if [[ -d /etc/nginx/sites-enabled ]] ; then
58+ echo " Checking enabled nginx vhosts" ;
59+ for FIL in /etc/nginx/sites-enabled/* ; do
60+ CRT=$( grep ' ssl_certificate' " ${FIL} " | grep -E -v ' ^[[:space:]]*#' | awk ' {print $2}' | head -n 1) ;
61+ CRT=${CRT% ;}
62+ KEY=$( grep ' ssl_certificate_key' " ${FIL} " | grep -E -v ' ^[[:space:]]*#' | awk ' {print $2}' | head -n 1) ;
63+ KEY=${KEY% ;}
64+ chkdata " $FIL " " $CRT " " $KEY " ;
65+ done
66+ fi
0 commit comments