Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
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.