HTTPS kaydı, HTTP hizmetinin alternatif hedefini ve bağlantı parametrelerini DNS üzerinden bildiren bir kaynak kaydıdır. Hizmetlerin hedef ve bağlantı bilgilerini tanımlayan SVCB (Service Binding) yapısını kullanır. İstemci bu kayıt sayesinde desteklenen uygulama protokollerini, portu ve adres ipuçlarını bağlantıdan önce değerlendirebilir.

Bu kayıt, DNS içinde 65 numaralı kaynak kaydı türü olarak tanımlanır. Adındaki HTTPS, DNS sorgusunun şifrelendiği anlamına gelmez. DNS sorgularını HTTPS içinde taşıyan DoH (DNS over HTTPS) hizmetinden farklı olarak bir web hizmetine nasıl bağlanılabileceğini açıklar.

SVCB Tabanlı Yapı Nasıl Okunur?

HTTPS kaydının veri yapısında SvcPriority (hizmet önceliği), TargetName (hedef adı) ve isteğe bağlı SvcParams (hizmet parametreleri) bulunur. Öncelik 0 ise kayıt, hizmet için başka bir adı takip ettiren AliasMode; 0’dan büyükse bağlantı hedefi ve parametrelerini bildiren ServiceMode olarak yorumlanır. Aynı kayıt kümesinde iki mod birlikte bulunursa AliasMode geçerli olur ve ServiceMode kayıtları yok sayılır.

AliasMode ile Hizmet Adını Başka Hedefe Bağlama

Hizmet önceliği 0 olan HTTPS kaydı AliasMode’da çalışır. Bu mod, sorgulanan hizmet adını başka bir hedef adına bağlar. İstemci, AliasMode kaydındaki hizmet parametrelerini dikkate almaz ve HTTPS hizmeti için belirtilen hedefteki kayıtları değerlendirir.

Bu davranış, bir alan adını başka bir ada bağlayan CNAME kaydıyla aynı değildir. CNAME bir DNS adını genel olarak başka bir ada eşlerken HTTPS kaydının AliasMode biçimi yalnız HTTPS hizmet bağlama sürecini etkiler.

ServiceMode ile Bağlantı Seçeneklerini Bildirme

Hizmet önceliği 0'dan büyük olan HTTPS kayıtları ServiceMode’da çalışır. Kayıt, hedef adla birlikte bağlantı seçimini etkileyen parametreler taşıyabilir. Birden fazla kullanılabilir kayıt varsa daha düşük sayısal öncelik önce değerlendirilir.

İstemci bütün ServiceMode kayıtlarını kullanmak zorunda değildir; yalnız desteklediği parametrelerle uyumlu olanları değerlendirir. Zorunlu bir anahtarı veya bu anahtarın değerini desteklemiyorsa ilgili kaydı kullanmaz.

HTTPS Kaydındaki Bağlantı Parametreleri

Hizmet parametreleri, bağlantı kurulurken kullanılacak protokol, port ve adres ipuçları gibi bilgiler taşır. En sık karşılaşılan alanların anlamı şöyledir:

  • alpn: Hizmetin desteklediği uygulama protokollerinin ALPN (Application-Layer Protocol Negotiation) kimliklerini belirtir. ALPN, bağlantı kurulurken kullanılacak uygulama protokolünü seçmeye yarar. Örneğin “h2” HTTP/2’yi, “h3” HTTP/3’ü belirtir.
  • port: İstemcinin varsayılan HTTPS portu yerine kullanacağı port numarasını bildirir; güvenlik duvarında port açmaz.
  • ipv4hint ve ipv6hint: IPv4 ve IPv6 için adres ipuçları sağlar. Bu adresler bağlantının daha erken başlamasına yardımcı olabilir.
  • no-default-alpn: İstemcinin varsayılan protokollerin de desteklendiğini varsaymasını engeller. Bu anahtar kullanılıyorsa “alpn” alanı da bulunmalıdır.
  • mandatory: Kaydın kullanılabilmesi için istemcinin desteklemesi gereken parametre anahtarlarını listeler. HTTPS kayıtlarında “port” ve “no-default-alpn” anahtarları bu listede yer almasalar da zorunlu sayılır.

IP adresi ipuçları normal adres çözümlemesinin kesin sonucu değildir. İstemci, hedef ad için güncel A veya AAAA yanıtlarını aldığında ipuçlarının yerine bu yanıtları kullanır; ipuçları bağlantının daha erken başlatılmasına yardımcı olur.

İstemci Bağlantıyı Nasıl Kurar?

HTTPS kaydını destekleyen bir istemci, HTTP hizmetine bağlanmadan önce DNS yanıtındaki hizmet bağlama bilgisini değerlendirir. İstemci kaydı şu sırayla işler:

  1. İstemci, istenen hizmet adı için HTTPS kaydını sorgular veya DNS yanıtındaki kaydı okur.
  2. Yanıtta AliasMode varsa belirtilen hedefteki HTTPS kaydını takip eder.
  3. ServiceMode kayıtlarını öncelik ve desteklenen parametrelere göre değerlendirir.
  4. Ardından uygun hedefi, ALPN değerini ve portu seçer; gerekli adres çözümlemesini yapar.
  5. Son olarak bağlantıyı dener. Şifreleme ve sunucu kimliği doğrulaması sağlayan TLS kullanılırken sertifikayı asıl web hizmetinin adı için doğrular.

HTTPS kaydı bulunmazsa, desteklenmiyorsa veya kullanılabilir bir ServiceMode seçeneği içermiyorsa bu kayıt olmadan da bağlanabilen istemci geleneksel A ve AAAA tabanlı bağlantı yoluna dönebilir. Örneğin parametre değerinin biçimi bozuksa veya aynı parametre anahtarı tekrarlanmışsa istemci bütün HTTPS kayıt kümesini reddeder. Bu, tanımadığı isteğe bağlı bir anahtarı yok saymasından farklıdır.

DNS yanıtlarının kaynağını ve bütünlüğünü denetleyen DNSSEC ile korunan yanıtta doğrulama hatası oluşursa istemcinin bunu kayıt yokmuş gibi ele almak yerine bağlantıyı durdurması önerilir. Böylece hatalı veya engellenmiş bir yanıtın daha az korunan bağlantıya geçiş için kullanılması önlenir.

HTTPS Kaydı ile A, AAAA, HTTP Yönlendirmesi ve TLS Arasındaki Farklar

A ve AAAA kayıtları bir adı sırasıyla IPv4 ve IPv6 adreslerine çözer. HTTPS kaydı ise hizmetin alternatif hedefini ve bağlantı özelliklerini bildirir; adres kayıtlarını genel olarak ortadan kaldırmaz.

HTTP yönlendirmesi, istemci sunucuya bağlanıp yanıt aldıktan sonra 301, 302 veya 307 gibi durum kodlarıyla gerçekleşir. HTTPS kaydı böyle bir HTTP yanıtı üretmez. Geçerli bir AliasMode veya istemciyle uyumlu bir ServiceMode kaydı dönerse istemci, HTTP adresini HTTPS olarak ele alabilir. Bu geçişte URL'nin “http” bölümü “https” olur; açıkça yazılmış 80 portu da 443’e çevrilir. Alan adı, yol ve diğer adres bileşenleri değişmez.

TLS sertifikası HTTPS kaydından bağımsızdır. HTTPS kaydı sertifika üretmez, doğrulamayı atlatmaz ve tek başına güvenli bağlantı garantisi vermez; sunucu yine istenen site adı için geçerli bir sertifika sunmalıdır.

HTTPS Kaydı Sonuçları Nasıl Yorumlanır?

  • “alpn” alanında “h3” görülmesi, sunucunun HTTP/3 bağlantısını gerçekten kabul ettiğini tek başına kanıtlamaz.
  • DNS sağlayıcısının paneli HTTPS kaydı yayımlamayı desteklemeli; recursive resolver (özyinelemeli DNS çözümleyicisi) ise kaydı istemciye iletebilmelidir. Recursive resolver’ın bağlantı parametrelerini ayrıca yorumlaması şart değildir; kaydın nasıl kullanılacağı istemcinin desteğine bağlıdır.
  • Yanlış hedef, port veya zorunlu parametre tanımı, destekleyen istemcilerde bağlantı sorununa yol açabilir.