One-Liners rund um kryptographische Schlüssel

Ich hatte so­eben (mal wie­der) die An­for­de­rung, mög­lichst skript­ge­steu­ert OpenS­SL-Zer­ti­fi­ka­te von Web­ser­vern her­un­ter­zu­la­den und deren Fin­ger­print an­zu­zei­gen (warum zum Geier zei­gen die meis­ten Netz-Cli­ents einen Fin­ger­print in der GUI zwar an, las­sen es aber nicht zu, ihn als Text zu mar­kie­ren und zu ko­pie­ren?).
Ein guter Anlaß, die gan­zen Skript-Tools für die "üb­li­chen Ver­däch­ti­gen" mal zu­sam­men­zu­tra­gen.

SSL (ins­bes. https)

opens­sl hat ja eine schier un­glaub­li­che Menge an Pa­ra­me­tern und Op­tio­nen - unter an­de­rem bie­tet opens­sl mit s_client und s_server einen pri­mi­ti­ven SSL-Cli­ent/Ser­ver.

Zer­ti­fi­ka­te her­un­ter­la­den

Fol­gen­der One­liner läd ein Zer­ti­fi­kat und gibt es auf stdout aus:
echo "" | openssl s_client -connect $SERVER:$PORT -showcerts | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

Fin­ger­print an­zei­gen

So zeigt opens­sl den SHA1-Fin­ger­print eines Zer­ti­fi­kats an:
openssl x509 -noout -fingerprint -in $CERTFILE
Läßt man den -in-Pa­ra­me­ter weg, so liest opens­sl die Daten von stdin; so läßt sich der Be­fehl an obige Kom­man­do­zei­le mit einer wei­te­ren Pipe anf­lan­schen.

SSH

ssh hat freund­li­cher­wei­se für sol­che Ope­ra­tio­nen ein­zel­ne Tools, so daß man sich nicht durch Berge von Op­tio­nen durch­wüh­len muß...

Zer­ti­fi­ka­te von Ser­vern ein­sam­meln

Um eine die Zer­ti­fi­ka­te von einer Liste von Ser­vern ein­zu­sam­meln, gibt es das Kom­man­do­zei­len-Tool ssh-keyscan:
ssh-keyscan host1 [host2...]
Die Aus­ga­be er­folgt auf stdout in dem For­mat, das auch die known_hosts-Da­tei be­sitzt. Al­ter­na­tiv kann die Liste der Ser­ver auch aus einer Datei ein­ge­le­sen wer­den. Des­wei­te­ren bie­tet ssh-key­scan auch die Op­ti­on, die Ser­ver­na­men in der Aus­ga­be nur als Hash an­zu­zei­gen.

Fin­ger­print an­zei­gen

Bei der Ver­bin­dung mit einer noch un­be­kann­ten Ma­schi­ne be­kommt man den Fin­ger­print an­ge­zeigt... auf dem Ser­ver be­fin­det sich je­doch nur die Pu­blic-Key-Da­tei (ty­pi­scher­wei­se in /etc/ssh/ss­h_hos­t_d­sa_key.pub). Möch­te man sich für eine sol­che Pu­blic-Key-Da­tei den Fin­ger­print be­rech­nen las­sen, so kann man dies fol­gen­der­ma­ßen tun:
ssh-keygen -l -f $PUBLICKEYFILE