Nachdem ich gestern die SSH Server nach unsicheren Key geprüft hatte, waren heute unsere SSL Server dran. Eine passende Blacklist liefert Ubuntu beim Update im Packet openssl-blacklist mit samt dem passenden Tool mit dem man ein lokales Keyfile überprüfen kann. Leider hilft das nicht bei entfernten Servern weiter und so habe ich heute ein bisschen ge-scripted um auch Remote checken zu können.
Das Script macht nichts anderes als mit dem openssl Kommando s_client
das SSL Certificate zu extrahieren und dann dem Modulus des Pub-Key
mittels SHA1 Checksumme gegen die Blacklist aus dem openssl-blacklist
Paket zu prüfen:
Hier das Script:
#!/bin/sh
host=$1
if [ x$host != x ] ; then
(echo HEAD / HTTP/1.0\\n\\n; sleep 1) | openssl s_client -connect $host:443 -showcerts > $host.log 2>&1
if ! grep -q "BEGIN CERT" $host.log ; then
echo $host does not present a SSL Certificate
else
fp=`openssl x509 -noout -modulus -in $host.log | sha1sum | cut -c 21-40`
cn=`openssl x509 -noout -subject -in $host.log | sed -e 's/^.*CN=\([^/]*\).*$/\1/'`
if grep -q $fp /usr/share/openssl-blacklist/blacklist* ; then
echo $host \($cn\) blacklisted!
else
echo $host \($cn\) OK
fi
fi
else
echo usage: $0 [hostname/ip]
fi