Een TLSA-record publiceert een vingerafdruk van het certificaat of de publieke sleutel van een server in DNS. Een client die DANE ondersteunt vergelijkt wat de server toont met wat DNS zegt en weigert de verbinding bij een verschil. Het wordt vooral gebruikt om e-mail tussen servers te beveiligen, waar geen browser en geen mens is die een waarschuwing wegklikt.
DNSSEC is niet optioneel
Een TLSA-record is alleen betrouwbaar als het antwoord onderweg niet vervalst kan worden. Dat is wat DNSSEC regelt. Zonder dat negeert een client die DANE ondersteunt je TLSA-records, of erger, jij denkt veiliger te zitten dan je zit. Onderteken eerst de zone.
De naam
TLSA-records staan op een naam die is opgebouwd uit de poort en het protocol van de dienst: _25._tcp.mail.example.com voor SMTP op poort 25 van mail.example.com. Eerst de poort, dan het protocol, dan de host.
De drie getallen en de data
_25._tcp.mail.example.com. IN TLSA 3 1 1 2bb1...9f0c
- Usage. Wat wordt vastgelegd.
3 (DANE-EE) legt het eigen certificaat of de sleutel van de server vast. 2 (DANE-TA) legt een CA vast die je voor die dienst vertrouwt. 0 en 1 koppelen aan het publieke CA-systeem en zijn zeldzaam. - Selector.
0 hasht het hele certificaat, 1 alleen de publieke sleutel. 1 overleeft verlengingen zolang je de sleutel houdt. - Matching type.
0 is de exacte data, 1 is SHA-256, 2 is SHA-512. - Data. De hexadecimale digest.
De gebruikelijke keuze is 3 1 1, DANE-EE met de publieke sleutel en SHA-256. DNSense vult die waarden standaard in.
Lengtecontroles
De data moet hexadecimaal zijn en bij matching type 1 uit 64 tekens bestaan, bij type 2 uit 128. DNSense controleert beide, omdat clients een hash met de verkeerde lengte stilletjes negeren.
De hash genereren
Met OpenSSL, voor een certificaat in cert.pem:
openssl x509 -in cert.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256
Publiceer een record voor de nieuwe sleutel voordat je ernaar overschakelt. Anders weigeren DANE-clients de server tijdens de overgang.
Toevoegen in DNSense
Klik op Create record, kies TLSA, vul de naam in en plak de hash bij Certificate data (hex). Usage, Selector en Matching type zijn keuzelijsten waarin de betekenis staat uitgeschreven. Ze beginnen op de gebruikelijke 3 - DANE-EE, 1 - Public key en 1 - SHA-256.
Op de zonepagina kun je filteren op TLSA om ze allemaal te zien.
Ondersteuning per provider
TLSA is niet overal beschikbaar. GoDaddy en Namecheap kunnen geen TLSA-records bewaren via hun API, dus DNSense biedt het type niet aan voor zones daar. Elke andere ondersteunde provider accepteert het.