Bei vielen konfigurierten virtual hosts (vhosts) kann man irgendwann die Übersicht verlieren vie viele Zertifikate und – im Fall von SAN Zertifikaten – wie viele Domains dort konfiguriert sind.
Das folgende Script erledigt diese Aufgabe für nginx, kann jedoch auch einfach für apache umgeschrieben werden.
#!/bin/bash
# Lists all domains in all certificates in all nginx vhosts sorted
CONFDIR="/etc/nginx/sites-enabled"
for cert in `grep 'ssl_certificate ' $CONFDIR/*.conf |grep -v '\#' | awk '{ print $3 }' | sed -e 's/;//g' | sort | uniq`; do
echo "Certificate: $cert"
for domain in `openssl x509 -in $cert -text -noout | grep 'DNS' | sed -e 's/DNS://g' | sed -e 's/, /\n/g' | sed -e 's/^[[:space:]]*//' |sort | uniq`; do
echo " - $domain"
done
echo "TOTAL DOMAINS: `openssl x509 -in $cert -text -noout | grep 'DNS' | sed -e 's/DNS://g' | sed -e 's/, /\n/g' | sed -e 's/^[[:space:]]*//' |sort | uniq | wc -l`"
echo -e "\n"
done
echo "TOTAL CERTIFICATES: `grep 'ssl_certificate ' $CONFDIR/*.conf |grep -v '\#' | awk '{ print $3 }' | sed -e 's/;//g' | sort | uniq | wc -l`"