Protokol DANE, který zavádí DNS záznam typu TLSA, vznikl za účelem zvýšení bezpečnosti při ověřování původu serverem poskytnutého certifikátu. DNS TLSA záznam určuje certifikát služby pro kombinaci údajů – FQDN, protokol a port, které dohromady skládají prefix záznamu. Pomocí TLSA záznamu je tedy možné ověřit, zda nedošlo na cestě mezi příjemcem a odesílatelem k pozměnění certifikátu.
Použití TLSA záznamu má smyls pouze v případě zabezpečení DNS zóny domény pomocí protokolu DNSSEC, kdy je zaručena důvěryhodnost autoritativní odpovědi z DNS.
DANE protokol včetně TLSA záznamu je definován v RFC6698
Formát TLSA záznamu
Formát doménového jména – prefixu TLSA záznamu
_<port>._<ipprotokol>.<domena>
Doménový název pro zabezpečenou HTTPS komunikaci na doméně www.domena.tld bude tedy vypadat následovně:
_443._tcp.www.domena.tld
Hodnota TLSA záznamu
TLSA záznam obsahuje tři paramtry a následně binární data pro asociaci certifikátu:
- CertificateUsage – 4 možnosti přiřazení certifikátu doménovému názvu
- 0 – binární data kódují CA certifikát, serverový certifikát musí projít PKIX validací
- 1 – binární data kódují EE (End Entity) certifikát, serverový certifikát musí odpovídat tomuto EE certifikátu, serverový certifkát musí projít PKIX validací k existujícímu kořenu důvěry
- 2 – binární data kódují libovolný certifikát CA (který nemusí být v seznamu důvěryhodných certifikátů validujícího klienta), tento certifikát je použit jako nový kořen důvěry, serverový certifikát musí projít PKIX validací k novému kořenu důvěry
- 3 – binární data kódují EE certifikát, serverový certifikát musí projít odpovídat tomuto EE certifikátu
- Selector – definuje, která část certifikátu se ověřuje
- 0 – celý certifikát
- 1 – veřejný klíč (SubjectPublicKeyInfo)
- MatchingType – definuje, jak se porovnává certifikát z řetězce proti datům v TLSA záznamu
- 0 – kontrola bajt po bajtu na vybrané části
- 1 – SHA-256 vybrané části
- 2 – SHA-512 vybrané části
- poslední část záznamu obsahuje binární data pro porovnávání s poskytnutým certifikátem
CertificationUsage = 0/1 slouží k zesílení důvěry CA. V případě hodnoty 0 tím, že se omezí, která CA může být použita pro zabezpečenou komunikaci se serverem. Použitím hodnoty 1 se definuje, který konkrétní certifikát může být k tomuto účelu použit.
CertificationUsage = 2/3 umožňuje zlepšit použití interních certifikačních autorit a ověřování self-signed certifikátů (možnost 3)
Výsledný TLSA záznam může vypadat takto:
_443._tcp.www.domena.tld. IN TLSA 0 1 1 ef2dbd0fb1785efd174e9072b674b439c1c1b1d2f3afd76c8bcd3c8eb02b56e7
Generování TLSA záznamů
Pro generování TLSA záznamů je možné použít například utilitu sweed nebo online generátor