Bei dem Erzeugen des Hash für einen TLSA Record kann mensch plötzlich sehr viel „Spaß“ haben.
Die geläufigste, beim Suchen zu findende Anleitung ist ja die folgende:
openssl x509 -in example.com.crt -outform DER | openssl sha256 (stdin)= 46fc14a051629364fc0bedafd87b74731c7e63af4d772127871b0bd9f2bbd29c |
soweit so gut. Also einen ensprechden Hashwert erzeugt und per DNS publiziert. Im nächsten Schritt versuchen wir mal den Eintrag zu validieren unter Verwendung von z.B.: https://www.huque.com/bin/danecheck oder https://dane.sys4.de/
Und was müssen wir feststellen: Der Hashwert ist ungültig! – aber warum?
Ok, also auf ein Webseiten gegangen um einen TLSA Hash zu erstellen (z.B.: https://de.ssl-tools.net/tlsa-generator)
Hups, warum kommt die Webseite auf ein anderes Ergebnis als openssl in der Shell?
Möglicherweise ein openssl Problem? – Probieren wir mal einen anderen Rechner aus – das gleiche Ergebnis wie vorher – ist ja auf der einen Seite gut und sollte auch so sein – aber warum kommt die Webseite auf ein anderes Ergebnis als ich?
Beim Suchen bin ich nun über den einen Blogeintrag gestolpert:
Hier gibt es einen Codeschnipsel zum erzeugen des TLSA Records … Probieren wir den doch mal aus – und? – das gleiche Ergebnis wie die Webseiten ….
Hier der besagte Codeschnipsel als bash script:
#!/bin/bash server=`hostname -f` tlsa=$(openssl x509 -in $1 -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256 -binary | hexdump -ve '/1 "%02x"') echo -e "_25._tcp.$server. IN TLSA 3 1 1 $tlsa\n" |
Ist ein wenig aufwendiger – führt aber zu einem offensichtlich „schönerem“ Ergebnis.
Und für’s nächste mal:
posttls-finger -t30 -T180 -c -L verbose,summary gruppe04.de |
und selber überprüfen …