#!/usr/bin/env bash # Tool zum Prüfen von SSL-Gültigkeit mehrer Domains # Maintainer: peignerpausz set -o pipefail RED="\033[31m" GREEN="\033[32m" YELLOW="\033[33m" RESET="\033[0m" declare -a DOMAINS usage() { cat <&1 | grep -F "SSL certificate verify ok") EXPIRE=$(echo | openssl s_client -connect $domain:443 -servername $domain 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2) ISSUER=$(echo | openssl s_client -connect "$domain:443" -servername "$domain" 2>/dev/null | openssl x509 -noout -issuer | grep -o 'O *= *[^,]*' | sed 's/O *= *//') expire_ts=$(date -d "$EXPIRE" +%s) now_ts=$(date +%s) days_left=$(((expire_ts - now_ts) / 86400)) if [[ -n "$VALIDITY" ]]; then printf "${GREEN}OK${RESET} valid SSL\n" else printf "${RED}X${RESET} not valid SSL\n" fi if [ "$days_left" -lt 0 ]; then printf "${RED}CRITICAL${RESET} Zertifikat ist seit %d Tagen abgelaufen (%s)\n" "$((-days_left))" "$EXPIRE" elif [ "$days_left" -lt 7 ]; then printf "${RED}CRITICAL${RESET} Zertifikat läuft in %d Tagen ab (%s)\n" "$days_left" "$EXPIRE" elif [ "$days_left" -lt 30 ]; then printf "${YELLOW}WARNING${RESET} SSL-Zertifikat läuft in $days_left Tagen ab ($EXPIRE)\n" else printf "${GREEN}OK${RESET} SSL-Zertifikat gültig bis $EXPIRE ($days_left Tage verbleibend)\n" fi if [[ -n $EXPECTED_ISSUER ]]; then if [[ "$ISSUER" == *"$EXPECTED_ISSUER"* ]]; then printf "${GREEN}OK${RESET} Cert ist von %s" "$EXPECTED_ISSUER" else printf "${YELLOW}X${RESET} Cert ist nicht von %s (gefunden: %s)" "$EXPECTED_ISSUER" "$ISSUER" fi else printf "${GREEN}INFO${RESET} Cert-Aussteller: %s" "$ISSUER" fi printf "\n" done