Spaß mit TLSA Records

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 …