Main /

Openssh

Openssh

openssh

Lt. Wikipedia/openssh ist es ein Programmpaket um Dateien zu übertragen, dabei nutzt es Verschlüsselung.

Um mit Verschlüsselung zu arbeiten bedarf es sog. Zertifikaten, diese werden von verschiedenen Stellen ausgegeben teilweise zu horrenden Preisen. Heutzutage ist es dank https://letsencrypt.org/Let's Encrypt aber recht einfach und kostenlos sich ein Zertifikat zu erstellen und zu nutzen. Leider läuft dieses Zertifikat nach 3 Monaten ab, so das man sich wieder ein neues besorgen muss.

Kleines Script, das eine $DOMAIN ausfragt, ob sein Zertifikat noch gültig ist (abgelaufen oder nicht)

 SERVER=${1}
 if true | openssl s_client -servername ${DOMAIN} -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates -checkend 0; then
   echo "Certificate for ${DOMAIN} is not expired"
 else
   echo "Certificate for ${DOMAIN} is expired"
 fi

Speichern, ausführbar machen und starten

 check.sh www.heise.de

Um ein Datum zu erfragen:

 $ echo QUIT | openssl s_client -servername moonserver.nathan.to -connect moonserver.nathan.to:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates

 issuer= /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 subject= /CN=moonserver.nathan.to
 notBefore=Mar 31 19:49:42 2019 GMT
 notAfter=Jun 29 19:49:42 2019 GMT

Ist also noch bis zum 29.Juni um 19:49Uhr gültig, vorher sollte es erneuert werden.

Ist ein Zertifikat abgelaufen, beschwert sich der Browser, das man auf einer nicht mehr sicheren Seite unterwegs ist.

Um noch mehr Informationen über das Zertifikat zu erhalten:

 $ echo QUIT | openssl s_client -servername moonserver.nathan.to -connect moonserver.nathan.to:443

Dann gibt es einen ganzen Rattenschwanz an Informationen.

Da man nicht ständig das Zertifikat vom Server holen möchte wird es in sog. Pools zwischengelagert, crt-Dateien die etliche Vertrauenswürdige Zertifikate enthalten.

Leider liegen diese verschlüsselt vor. Also zerlegen wir die crt-Datei in viele kleine pem Dateien:

 $ awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < ca-bundle.crt

Jetzt können wir zu jeder pem-Datei das Zertifikat besorgen und speichern das wieder in allcerts.txt

 $ for i in $(seq 1 171); do CERTFILE=cert.$i.pem; openssl x509 -in $CERTFILE -text -noout >>allcerts.txt; done

Jetzt liegen alle Informationen gebündelt und entschlüsselt in einer Datei. Wozu das gut sein soll, ist halt von Interesse.

Links

Frische Änderungen | Menü editieren
zuletzt geändert am 06.05.2022 09:40 Uhr von Lars
Edit Page | Page History