Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
105395c62d | ||
|
|
e0df6c5405 | ||
|
|
083f42ca51 |
@@ -44,6 +44,8 @@ Optimierte Bash-Konfigurationen für verschiedene Support-Umgebungen:
|
|||||||
Tool zur `dig`-Massenabfrage von Domains und DNS-Records.
|
Tool zur `dig`-Massenabfrage von Domains und DNS-Records.
|
||||||
- [`histodomain`](./domaintools/histodomain/README.md)
|
- [`histodomain`](./domaintools/histodomain/README.md)
|
||||||
Abfrage zu historischen DNS-Einträgen über die [Securitytrails-API](https://securitytrails.com).
|
Abfrage zu historischen DNS-Einträgen über die [Securitytrails-API](https://securitytrails.com).
|
||||||
|
- [`sslchecker`](./domaintools/sslchecker/README.md)
|
||||||
|
Tool zur schnellen SSL-Prüfung mehrerer Domains gleichzeitig.
|
||||||
|
|
||||||
## Legacy Snippets
|
## Legacy Snippets
|
||||||
|
|
||||||
@@ -149,9 +151,10 @@ cd /pfad/zu/esn-support-tools
|
|||||||
Um ein neues Bash-Skript in dieses Repository aufzunehmen, bitte folgende Schritte:
|
Um ein neues Bash-Skript in dieses Repository aufzunehmen, bitte folgende Schritte:
|
||||||
|
|
||||||
1. **Ordnerstruktur anlegen**
|
1. **Ordnerstruktur anlegen**
|
||||||
Je nach Kategorie (`bashprofiles`, `legacy` oder `wh20`) einen Unterordner erstellen:
|
Je nach Kategorie (`bashprofiles`, `domaintools`, `legacy` oder `wh20`) einen Unterordner erstellen:
|
||||||
```
|
```
|
||||||
bashprofiles/<username>/
|
bashprofiles/<username>/
|
||||||
|
domaintools/<scriptname>/
|
||||||
legacy/<scriptname>/
|
legacy/<scriptname>/
|
||||||
wh20/<scriptname>/
|
wh20/<scriptname>/
|
||||||
```
|
```
|
||||||
@@ -159,6 +162,10 @@ Um ein neues Bash-Skript in dieses Repository aufzunehmen, bitte folgende Schrit
|
|||||||
2. **Skript hinzufügen**
|
2. **Skript hinzufügen**
|
||||||
Das eigentliche Skript im neuen Ordner ablegen:
|
Das eigentliche Skript im neuen Ordner ablegen:
|
||||||
```
|
```
|
||||||
|
domaintools/<scriptname>/<scriptname>
|
||||||
|
```
|
||||||
|
oder
|
||||||
|
```
|
||||||
legacy/<scriptname>/<scriptname>
|
legacy/<scriptname>/<scriptname>
|
||||||
```
|
```
|
||||||
oder
|
oder
|
||||||
@@ -176,16 +183,21 @@ Um ein neues Bash-Skript in dieses Repository aufzunehmen, bitte folgende Schrit
|
|||||||
[README_template_script.md](./README_template.md)
|
[README_template_script.md](./README_template.md)
|
||||||
→ kopieren, anpassen und ins Skript-Verzeichnis legen:
|
→ kopieren, anpassen und ins Skript-Verzeichnis legen:
|
||||||
```
|
```
|
||||||
legacy/<scriptname>/README.md
|
domaintools/<scriptname>/README.md
|
||||||
```
|
```
|
||||||
oder
|
oder
|
||||||
```
|
```
|
||||||
|
legacy/<scriptname>/README.md
|
||||||
|
```
|
||||||
|
oder
|
||||||
|
```
|
||||||
wh20/<scriptname>/README.md
|
wh20/<scriptname>/README.md
|
||||||
```
|
```
|
||||||
|
|
||||||
4. **Übersicht aktualisieren**
|
4. **Übersicht aktualisieren**
|
||||||
Das Skript in die Übersicht der passenden Kategorie-README eintragen:
|
Das Skript in die Übersicht der passenden Kategorie-README eintragen:
|
||||||
- [`bashprofiles/README.md`](./bashprofiles/README.md)
|
- [`bashprofiles/README.md`](./bashprofiles/README.md)
|
||||||
|
- [`domaintools/README.md`](./domaintools/README.md)
|
||||||
- [`legacy/README.md`](./legacy/README.md)
|
- [`legacy/README.md`](./legacy/README.md)
|
||||||
- [`wh20/README.md`](./wh20/README.md)
|
- [`wh20/README.md`](./wh20/README.md)
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,9 @@ Abfrage zu historischen DNS-Einträgen über die Securitytrails-API.
|
|||||||
|
|
||||||
- [Dokumentation & Beispiele](./histodomain/README.md)
|
- [Dokumentation & Beispiele](./histodomain/README.md)
|
||||||
|
|
||||||
|
### [`sslchecker`](./sslchecker/)
|
||||||
|
Tool zur schnellen SSL-Prüfung mehrerer Domains gleichzeitig.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Voraussetzungen
|
## Voraussetzungen
|
||||||
|
|||||||
@@ -0,0 +1,101 @@
|
|||||||
|
# SSLChecker
|
||||||
|
|
||||||
|
Skript zum schnellen Prüfen der Gültigkeit und des Typs von SSL-Certs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Prüft Gültigkeit
|
||||||
|
- Prüft Typ (LE oder was anderes)
|
||||||
|
- Prüft Restgültigkeit des SSL-Certs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Repository klonen oder Skript kopieren:
|
||||||
|
```bash
|
||||||
|
git clone git.in.loki-net.at/esn-support-bash-snippets.git
|
||||||
|
cd esn-support-bash-snippets/domaintools/sslchecker
|
||||||
|
chmod +x sslchecker.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Abhängigkeiten (falls vorhanden) installieren:
|
||||||
|
- `curl`
|
||||||
|
- `openssl`
|
||||||
|
- beide auf der connect vorinstalliert
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Nutzung
|
||||||
|
|
||||||
|
### Standardaufruf
|
||||||
|
```bash
|
||||||
|
./sslchecker.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Beispiele
|
||||||
|
```bash
|
||||||
|
./sslchecker.sh -d domain1.tld domain2.tld domain3.tld -t le
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Optionen
|
||||||
|
|
||||||
|
```
|
||||||
|
Verwendung:
|
||||||
|
bash sslchecker.sh [OPTIONEN]
|
||||||
|
Oder interaktiv: bash sslchecker.sh
|
||||||
|
|
||||||
|
Optionen:
|
||||||
|
-d, --domains DOMAIN [DOMAINS...]
|
||||||
|
Zu prüfende Domains
|
||||||
|
-t, --type Typ
|
||||||
|
Prüft gegen erwarteten Issuer, etwa Let's Encrypt, Sectigo oder GlobalSign
|
||||||
|
-h, --help
|
||||||
|
Diese Hilfe anzeigen
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Beispielausgabe
|
||||||
|
|
||||||
|
```
|
||||||
|
bash sslchecker.sh -d ironsites.at myrealis.at orf.at -t le
|
||||||
|
|
||||||
|
+++SSLCHECKER v0.1+++
|
||||||
|
|
||||||
|
====== ironsites.at =========
|
||||||
|
OK valid SSL
|
||||||
|
OK SSL-Zertifikat gültig bis Nov 1 23:23:54 2026 GMT (46 Tage verbleibend)
|
||||||
|
OK Cert ist von Let's Encrypt
|
||||||
|
|
||||||
|
====== myrealis.at =========
|
||||||
|
OK valid SSL
|
||||||
|
OK SSL-Zertifikat gültig bis Nov 5 07:16:41 2026 GMT (49 Tage verbleibend)
|
||||||
|
OK Cert ist von Let's Encrypt
|
||||||
|
|
||||||
|
====== orf.at =========
|
||||||
|
OK valid SSL
|
||||||
|
OK SSL-Zertifikat gültig bis Jan 3 08:17:00 2027 GMT (108 Tage verbleibend)
|
||||||
|
X Cert ist nicht von Let's Encrypt (gefunden: GlobalSign nv-sa)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Setup-Hinweise
|
||||||
|
|
||||||
|
Falls notwendig, Alias in `~/.bashrc` setzen:
|
||||||
|
```bash
|
||||||
|
alias sslchecker='~/esn-support-tools/domaintools/sslchecker/sslchecker.sh'
|
||||||
|
```
|
||||||
|
---
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- To-Do:
|
||||||
|
Timeouts abfangen
|
||||||
|
eventuell Umbau auf `openssl` statt `curl`
|
||||||
|
Optionen ausbauen
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
#!/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 <<USAGE
|
||||||
|
Verwendung:
|
||||||
|
bash $0 [OPTIONEN]
|
||||||
|
Oder interaktiv: bash $0
|
||||||
|
|
||||||
|
Optionen:
|
||||||
|
-d, --domains DOMAIN [DOMAINS...]
|
||||||
|
Zu prüfende Domains
|
||||||
|
-t, --type
|
||||||
|
Prüft gegen erwarteten Issuer, etwa Let's Encrypt, Sectigo oder GlobalSign
|
||||||
|
-h, --help
|
||||||
|
Diese Hilfe anzeigen
|
||||||
|
|
||||||
|
Beispiele:
|
||||||
|
$0 -d domain1.tld domain2.tld -t le
|
||||||
|
|
||||||
|
$0 --domains domain1.tld domain2.tld --type le
|
||||||
|
USAGE
|
||||||
|
}
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
-d | --domains)
|
||||||
|
shift
|
||||||
|
while [[ $# -gt 0 && "$1" != -* ]]; do
|
||||||
|
DOMAINS+=("$1")
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
-t | --type)
|
||||||
|
ISSUER="$2"
|
||||||
|
|
||||||
|
case "$ISSUER" in
|
||||||
|
le)
|
||||||
|
EXPECTED_ISSUER="Let's Encrypt"
|
||||||
|
;;
|
||||||
|
digicert)
|
||||||
|
EXPECTED_ISSUER="DigiCert"
|
||||||
|
;;
|
||||||
|
sectigo)
|
||||||
|
EXPECTED_ISSUER="Sectigo"
|
||||||
|
;;
|
||||||
|
global)
|
||||||
|
EXPECTED_ISSUER="GlobalSign"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Fehler: Ungültiger Typ '$ISSUER'"
|
||||||
|
echo "Erlaubte Werte: le, digicert, sectigo, global"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
|
||||||
|
-h | --help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unbekannte Option: $1"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "+++SSLCHECKER v0.1+++\n"
|
||||||
|
[[ ${#DOMAINS[@]} -eq 0 ]] && read -ra DOMAINS -p "Welche Domains sollen gesucht werden? " DOMAINS
|
||||||
|
for domain in "${DOMAINS[@]}"; do
|
||||||
|
printf "\n========= %s =========\n" "$domain"
|
||||||
|
VALIDITY=$(curl -vI https://$domain 2>&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
|
||||||
Reference in New Issue
Block a user