INTEGRITY Dokumentace

DNS over TLS

DNS se ve výchozím nastavení odesílá přes nešifrované připojení. DNS over TLS (DoT) je jedním ze způsobů, jak odesílat DNS dotazy přes šifrované připojení. Cloudflare podporuje DNS over TLS na standardním portu 853 a splňuje požadavky RFC 7858 ↗.

DoT zabaluje standardní DNS provoz do TCP připojení šifrovaného pomocí TLS. Díky tomu nikdo mezi vaším zařízením a resolverem nemůže vaše DNS dotazy číst ani upravovat.

Jak to funguje

Cloudflare podporuje DNS over TLS (DoT) na 1.1.1.1, 1.0.0.1, a odpovídající adresy IPv6 (2606:4700:4700::1111 a 2606:4700:4700::1001) na portu 853. Pokud váš klient DoT nepodporuje IP adresy, lze endpoint DoT Cloudflare kontaktovat také podle hostname na one.one.one.one.

Stub resolver je software DNS klienta na vašem zařízení, který odesílá dotazy DNS resolveru. S DoT se stub resolver k resolveru připojuje prostřednictvím připojení TLS:

  1. Před navázáním spojení si stub resolver DNS uloží otisk certifikátu TLS serveru 1.1.1.1. Tento otisk je hash SHA-256 zakódovaný v base64 z informací o veřejném klíči certifikátu, známý jako otisk Subject Public Key Info (SPKI). Stub resolver pomocí tohoto otisku ověřuje, že se připojuje k pravému serveru 1.1.1.1.
  2. DNS stub resolver naváže TCP připojení s 1.1.1.1:853.
  3. DNS stub resolver zahájí TLS handshake, tedy proces, při kterém se obě strany dohodnou na parametrech šifrování a klient ověří identitu serveru.
  4. Během TLS handshake předkládá 1.1.1.1 svůj TLS certifikát.
  5. Jakmile je navázáno TLS spojení, může stub resolver DNS odesílat přes šifrované spojení, čímž zabraňuje odposlechu i manipulaci s daty.
  6. Všechny DNS dotazy odesílané přes připojení TLS musí splňovat specifikace odesílání DNS přes TCP ↗.

Příklad

kdig -d @1.1.1.1 +tls-ca +tls-host=one.one.one.one example.com

;; DEBUG: Querying for owner(example.com.), class(1), type(1), server(1.1.1.1), port(853), protocol(TCP)
;; DEBUG: TLS, imported 138 system certificates
;; DEBUG: TLS, received certificate hierarchy:
;; DEBUG:  #1, C=US,ST=California,L=San Francisco,O=Cloudflare\, Inc.,CN=cloudflare-dns.com
;; DEBUG:      SHA-256 PIN: GP8Knf7qBae+aIfythytMbYnL+yowaWVeD6MoLHkVRg=
;; DEBUG:  #2, C=US,O=DigiCert Inc,CN=DigiCert TLS Hybrid ECC SHA384 2020 CA1
;; DEBUG:      SHA-256 PIN: e0IRz5Tio3GA1Xs4fUVWmH1xHDiH2dMbVtCBSkOIdqM=
;; DEBUG: TLS, skipping certificate PIN check
;; DEBUG: TLS, The certificate is trusted.
;; TLS session (TLS1.3)-(ECDHE-X25519)-(ECDSA-SECP256R1-SHA256)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 3395
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1

;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 1232 B; ext-rcode: NOERROR
;; PADDING: 408 B

;; QUESTION SECTION:
;; example.com.        		IN	A

;; ANSWER SECTION:
example.com.        	75897	IN	A	93.184.216.34

;; Received 468 B
;; Time 2023-06-23 18:05:42 PDT
;; From 1.1.1.1@853(TCP) in 12.1 ms

Podporované verze TLS

Cloudflare DNS over TLS podporuje TLS 1.3 a TLS 1.2.