Nicht nur, wenn man gegen Verbrechen und Monster kämpfen möchte, ist es interessant zu erfahren, welche Cipher Suites ein Server unterstützt. Prinzipiell ist hierfür eine Testseite wie der SSL-Test von Qualys interessant, aber leider ist dieser etwas unflexibel, wenn es darum geht, beim Probieren verschiedener Setting behilflich zu sein.
Aber basierend auf einem Script bei Stack Overflow lässt sich schnell etwas bauen:
#!/usr/bin/env bash
# OpenSSL requires the port number.
SERVER=$1:443
DELAY=1
ciphers=$(openssl ciphers 'ALL:eNULL' | sed -e 's/:/ /g')
echo Obtaining cipher list from $(openssl version).
for cipher in ${ciphers[@]}
do
echo -n Testing $cipher...
result=$(echo -n | openssl s_client -cipher "$cipher" -connect $SERVER 2>&1)
if [[ "$result" =~ ":error:" ]] ; then
error=$(echo -n $result | cut -d':' -f6-)
echo NO \($error\)
else
if [[ "$result" =~ "Cipher is " ]] ; then
echo YES
else
echo UNKNOWN RESPONSE
echo $result
fi
fi
done
Eine kleine Anmerkung gilt den Zeilen 14 und 18, die gegenüber dem Original getauscht sind, da das Script ansonsten behauptet, dass mein Server jegliche Cipher akzeptiert (was natürlich nicht der Fall ist).
Wenn es dagegen etwas umfangreicher sein soll, gibt es mit meiner offenen Reimplementierung des SSL-Tests eine deutlich schnellere Alternative. Den Quelltext dafür findet man auf Github.