İçeriğe geç
DomainQ
Hosting ve Yedekleme

ACME Sertifika Yenilemesinde HTTP-01 ve DNS-01 Bağımlılıkları Nasıl Karşılaştırılır?

HTTP-01 web sunucusu ve 80 numaralı porta, DNS-01 ise otomatik DNS TXT kaydı güncellemesine dayanır. Yenileme yönteminizi altyapınızın erişim ve yetki sınırlarına göre seçin.

ACME Sertifika Yenilemesinde HTTP-01 ve DNS-01 Bağımlılıkları Nasıl Karşılaştırılır? — DomainQ blog kapak görseli

Sertifikanız ilk kez sorunsuz kurulmuş olsa bile yenileme günü otomasyon farklı bir noktada takılabilir: web sunucusu challenge dosyasını sunamıyor olabilir ya da DNS sistemi gerekli TXT kaydını zamanında güncelleyemiyor olabilir. HTTP-01 ve DNS-01 arasındaki seçim yalnızca ACME istemcisindeki bir ayar değildir. Yenileme işleminin hangi sisteme, hangi ağ erişimine ve hangi yetkilere bağlı olacağını belirler. HTTP-01 ve DNS-01 karşılaştırmasında temel soru şudur: Alan adı doğrulamasını web trafiğiyle mi, yoksa DNS kayıt yönetimiyle mi güvenilir biçimde otomatikleştirebiliyorsunuz? Bu yazı iki doğrulama yöntemini portlar, sunucu erişimi, DNS API'si, wildcard gereksinimi ve yetki sınırları üzerinden karşılaştırır.

ACME yenilemesinde bağımlılık seçimi: Wildcard gerekli mi?; Evet: DNS-01, TXT kaydı ve TCP/UDP 53; Hayır: Port 80 ve web yolu uygun mu?; Evet: HTTP-01 challenge dosyası; Hayır: DNS-01, API, yayılma ve sınırlı yetki
ACME yenilemesinde bağımlılık seçimi

Kısa özet

  • HTTP-01, challenge dosyasının web sunucusundan 80 numaralı port üzerinden erişilebilir olmasına bağlıdır.
  • DNS-01, _acme-challenge altında TXT kaydı oluşturabilen, yenilemeye uygun API sunan DNS yönetimine bağlıdır.
  • Wildcard sertifika gerekiyorsa DNS-01 kullanılır; HTTP-01 wildcard sertifikaları desteklemez.
  • DNS-01 için yetkili DNS sunucularına TCP ve UDP üzerinden gelen 53 numaralı port trafiği de izinli olmalıdır.

Önce bağımlılığı belirleyin: Yenilemede hangi sistem yanıt verecek?

HTTP-01 ve DNS-01, ACME istemcisinin alan adı doğrulaması için kullanabileceği iki farklı challenge, yani doğrulama yöntemidir. HTTP-01 seçildiğinde doğrulama yanıtı web sunucusundan gelir. DNS-01 seçildiğinde ise yanıt DNS içindeki bir TXT kaydından gelir. Bu yüzden seçim, mevcut altyapınızda hangi bileşeni düzenli ve kontrollü biçimde değiştirebildiğinize bağlıdır.

HTTP-01'de ACME istemcisi, alan adınızın /.well-known/acme-challenge/ yoluna token içeren bir dosya yerleştirir. Let’s Encrypt bu dosyayı HTTP üzerinden alır. DNS-01'de istemci, token ve hesap anahtarından türetilen TXT kaydını _acme-challenge.altalanadiniz altında oluşturur; Let’s Encrypt bu kaydı DNS sorgusuyla kontrol eder.

  • HTTP-01'in ana bağımlılığı, challenge dosyasını sunabilen web yolu ve gelen 80 numaralı port erişimidir.
  • DNS-01'in ana bağımlılığı, TXT kaydını güncelleyebilen DNS yönetimi ve yenileme otomasyonuna uygun API'dir.
  • Her iki yöntemde de ACME istemcisini çalıştıran makine için giden 443 numaralı port trafiğine izin verilmelidir.

Kaynak: [1] [2]

HTTP-01: Web sunucusu, port 80 ve frontend dağıtımı

HTTP-01, web sunucusu erişiminin doğrudan kullanılabildiği kurulumlarda anlaşılır bir doğrulama yoludur. Ancak doğrulama yalnızca 80 numaralı portta yapılabilir; ACME standardı istemcinin rastgele bir port seçmesine izin vermez. Alan adı gelen port 80 üzerinden HTTP isteğine yanıt veremiyorsa başka bir web portunun açık olması HTTP-01 için yeterli değildir.

Yönlendirme kullanıyorsanız bunun da sınırları vardır. Let’s Encrypt HTTP-01 sırasında en fazla 10 yönlendirmeyi izler. Yönlendirme hedefi yalnızca HTTP veya HTTPS kullanabilir ve yalnızca 80 ya da 443 numaralı porta gidebilir.

Birden çok web sunucusu veya frontend bulunan yapılarda challenge dosyası tüm sunucularda erişilebilir olmalıdır. Çok sayıda frontend varsa yenilemeden önce doğrulama yanıtını her birine dağıtmak zorlaşabilir.

  • HTTP-01 için gelen port 80 trafiğinin erişilebilir olduğunu kontrol edin.
  • ACME istemcisinin doğru alan adı ve doğru yol için challenge dosyasını sunabildiğini doğrulayın.
  • Birden çok frontend varsa dosyanın her frontend'de erişilebilir olmasını planlayın.
  • Yönlendirme varsa 10 adım, HTTP veya HTTPS şeması ve 80 ya da 443 portu sınırını dikkate alın.

Kaynak: [1] [2]

HTTP-01'i merkezileştirmek: Kolaylık ve sorumluluk

Birden çok frontend'e challenge yanıtı dağıtmak yerine, frontend'leri /.well-known/acme-challenge/ altındaki istekleri merkezi bir doğrulama sunucusuna yönlendirecek şekilde kurabilirsiniz. Örnek senaryoda farklı web sunucuları, bu yolu validation-server.example.com üzerindeki eşdeğer yola yönlendirir.

Bu düzen sertifika düzenleme sorumluluğunu merkezi doğrulama sunucusuna devreder. Bu nedenle sunucunun iyi korunması gerekir. Merkezileştirme frontend'lerdeki dağıtım işini azaltabilir, ancak doğrulama için kritik görevi tek bir sunucuda toplar.

  • Merkezi yönlendirme kullanılıyorsa challenge yolunun doğru hedefe gittiğini kontrol edin.
  • Doğrulama sunucusunu sertifika düzenleme sorumluluğu taşıyan bir bileşen olarak koruyun.
  • Tasarımın HTTP-01 yönlendirme sınırları içinde kaldığını doğrulayın.

Kaynak: [1] [2]

DNS-01: DNS API'si, TXT kaydı ve ağ erişimi

DNS-01, web sunucusuna dosya koymadan DNS üzerinden doğrulama yapar. İstemci _acme-challenge.altalanadiniz altında TXT kaydını oluşturur ve Let’s Encrypt bu kaydı DNS'te sorgular. Bu, doğrulamanın web sunucusu düzeninden bağımsız ilerlemesini sağlayabilir.

Yenilemenin otomatik kalması için DNS sağlayıcınızın kayıt güncellemelerini otomatikleştirmeye uygun bir API sunması gerekir. Kayıt güncellense bile bilginin DNS sunucularına yayılması gerekebilir. Sağlayıcının güncellemenin tamamen yayıldığını otomatik denetleyen bir API'si yoksa istemci, doğrulamayı başlatmadan önce yeterince bekleyecek şekilde yapılandırılmalıdır; bu süre bazen bir saate kadar çıkabilir.

DNS-01'de yetkili DNS sunucularına TCP ve UDP üzerinden gelen 53 numaralı port trafiğine izin verilmelidir. DNS sunucularını siz yönetiyorsanız bu erişimi kendi ağ ve güvenlik kurallarınızda kontrol edin. Haricî DNS hizmeti kullanıyorsanız, yenileme tasarımını değerlendirirken yetkili DNS hizmetinin bu doğrulama sorgularına yanıt verebildiğini de doğrulayın.

Aynı DNS adı altında birden fazla TXT kaydı bulunabilir. Örneğin wildcard ve wildcard olmayan sertifika doğrulaması aynı anda yürüyebilir. Ancak eski TXT kayıtları temizlenmelidir; DNS yanıtı fazla büyürse Let’s Encrypt yanıtı reddetmeye başlayabilir. DNS kayıtlarının rolünü temel düzeyde gözden geçirmek isterseniz DNS kayıtları: A, CNAME, MX ve TXT ne işe yarar? yazısı yardımcı olabilir.

  • DNS sağlayıcınızda TXT kaydı güncellemeye uygun API olup olmadığını kontrol edin.
  • İstemcinin DNS yayılmasını denetleyip denetleyemediğini veya bekleme süresine ihtiyaç duyup duymadığını belirleyin.
  • Yetkili DNS sunucularına TCP ve UDP üzerinden gelen 53 numaralı port trafiğini kontrol edin.
  • Yenileme sonrasında eski _acme-challenge TXT kayıtlarını temizleyin.

Kaynak: [1] [2]

Wildcard, çoklu sunucu ve internete kapalı web sunucuları

Wildcard alan adlarını içeren sertifikalar için DNS-01 gerekir. HTTP-01 wildcard sertifika düzenlemek için kullanılamaz. Bu gereksinim bazı altyapılarda seçimi doğrudan belirler.

DNS-01 birden çok web sunucusu olduğunda da iyi çalışabilir. Ayrıca web sunucuları genel internete açık olmayan alan adlarını doğrulamak için kullanılabilir. Challenge yanıtını web katmanına dağıtmanın zor olduğu veya web sunucularının dışarıdan erişilebilir olmadığı yapılarda, DNS yönetimi otomatikleştirilebiliyorsa DNS-01 daha uygun olabilir.

  • Wildcard sertifika ihtiyacını seçimden önce netleştirin.
  • Birden çok web sunucusunda HTTP-01 dosya dağıtımını, DNS-01'deki merkezi DNS güncellemesiyle karşılaştırın.
  • Web sunucusu genel internete açık değilse DNS-01'i değerlendirin.

Kaynak: [1] [2]

DNS-01'de erişim yetkisini daraltın ve delegasyonu değerlendirin

DNS-01'de önemli konu, DNS API kimlik bilgilerinin nerede tutulduğu ve ne kadar yetki verdiğidir. Tam DNS API kimlik bilgilerini web sunucusunda tutmak, sunucu ele geçirilirse etkinin önemli ölçüde artmasına neden olur. Daha dar kapsamlı API kimlik bilgileri kullanmak veya DNS doğrulamasını ayrı sunucuda yapıp sertifikaları web sunucusuna otomatik kopyalamak belirtilen seçeneklerdir.

_acme-challenge alt alanı, CNAME ya da NS kayıtlarıyla doğrulamaya özel başka bir DNS bölgesine veya sunucuya devredilebilir. Bu yaklaşım, ana DNS bölgesinin tamamını yenileme otomasyonuna açmak yerine doğrulama için ayrılmış bir yönetim noktası oluşturabilir. Mevcut TXT kayıtlarını izlemek için DNS-01 Doğrulamasında Eski TXT Kayıtları Neden Temizlenmeli? yazısını da inceleyebilirsiniz.

  • Tam yetkili DNS API kimlik bilgilerini web sunucusunda bulundurmaktan kaçının.
  • Mümkünse dar kapsamlı API kimlik bilgileri kullanın.
  • DNS doğrulamasını ayrı sunucuda yürütüp sertifikayı web sunucusuna otomatik kopyalama seçeneğini değerlendirin.
  • Gerekirse _acme-challenge alt alanını CNAME veya NS ile doğrulamaya özel bölgeye devretmeyi planlayın.

Kaynak: [2]

Hangi yöntem mevcut altyapınıza daha uygun?

HTTP-01, alan adı için gelen port 80 trafiği açıksa, challenge yolunu web sunucusunda güvenilir biçimde sunabiliyorsanız ve wildcard sertifikaya ihtiyacınız yoksa uygun olabilir. Tek frontend veya yönetimi kolay sayıda frontend bulunan düzenlerde bağımlılık doğrudan web katmanındadır.

DNS-01, wildcard sertifika gerekiyorsa, çok sayıda frontend'de challenge dosyası dağıtımı zorsa veya doğrulanacak alan adının web sunucusu genel internete açık değilse değerlendirilmelidir. Buna karşılık DNS sağlayıcısının otomasyona uygun API'si, DNS yayılmasının yönetimi, yetkili DNS sunucularına gelen TCP ve UDP 53 erişimi ve DNS API yetkisinin sınırlandırılması gerekir.

Örnek senaryo: İki web sunuculu işletme sitesi, aynı challenge dosyasını her iki sunucuda da port 80 üzerinden sunabiliyorsa HTTP-01 kullanabilir. Aynı işletme tüm alt alan adlarını kapsayan wildcard sertifika istiyorsa veya frontend sayısı arttığında dosya dağıtımını yönetemiyorsa, DNS sağlayıcısının uygun API'si ve yetkili DNS erişimi bulunması koşuluyla DNS-01 daha uygun olur.

  • HTTP-01 için port 80, challenge yolu ve tüm frontend'lerde erişilebilirlik gerekir.
  • DNS-01 için otomatik TXT güncellemesi, DNS yayılma yönetimi, TCP ve UDP 53 erişimi ve sınırlı API yetkisi gerekir.
  • Wildcard gereksinimi varsa DNS-01 kullanılmalıdır.
  • İstemciyi çalıştıran makine için giden port 443 erişimi gerekir.

Kaynak: [1] [2]

Uygulama kontrol listesi

  • Sertifikanın wildcard alan adı içerip içermediğini belirleyin; içeriyorsa DNS-01 planlayın.
  • HTTP-01 düşünülüyorsa gelen port 80 trafiğini ve /.well-known/acme-challenge/ yolunun erişilebilirliğini kontrol edin.
  • Birden çok frontend varsa HTTP-01 challenge dosyasının her sunucuda erişilebilir olduğunu doğrulayın veya merkezi yönlendirme tasarımını değerlendirin.
  • DNS-01 düşünülüyorsa DNS sağlayıcınızın TXT güncellemelerini otomatikleştirmeye uygun API'sini kontrol edin.
  • DNS-01 istemcisinde DNS yayılmasını denetleme ya da yeterli bekleme süresini yapılandırın.
  • Yetkili DNS sunucularına TCP ve UDP üzerinden gelen 53 numaralı port trafiğine izin verildiğini kontrol edin.
  • Eski _acme-challenge TXT kayıtlarını düzenli olarak temizleyin.
  • DNS API kimlik bilgilerini dar yetkilerle sınırlayın; tam yetkili bilgileri web sunucusunda tutmayın. ACME istemcisini çalıştıran makinenin giden 443 numaralı port erişimini doğrulayın.

ACME yenilemesinde HTTP-01 ile DNS-01 arasındaki temel ayrım, doğrulama yanıtının geldiği yerdir: HTTP-01 web sunucusunu, DNS-01 DNS TXT kaydını kullanır. Port 80 ve web yolu güvenilir biçimde yönetilebiliyorsa HTTP-01 sade bir seçenek olabilir. Wildcard, çok sayıda frontend veya genel internete açık olmayan web sunucuları varsa DNS-01 daha uygun olabilir; bunun karşılığında DNS API otomasyonu, yayılma beklemesi, yetki sınırları ve yetkili DNS sunucularına TCP ve UDP 53 erişimi yönetilmelidir.

Sık sorulan sorular

HTTP-01 doğrulamasını farklı bir portta kullanabilir miyim?

Hayır. HTTP-01 doğrulaması yalnızca 80 numaralı portta yapılabilir; ACME standardı istemcilerin rastgele port belirtmesine izin vermez.

Wildcard sertifika için HTTP-01 kullanılabilir mi?

Hayır. Wildcard sertifikaların düzenlenmesi için DNS-01 kullanılmalıdır; HTTP-01 wildcard sertifikaları desteklemez.

DNS-01 için web sunucumun internete açık olması gerekir mi?

Hayır. DNS-01, web sunucuları genel internete açık olmayan alan adlarını doğrulamak için kullanılabilir.

DNS-01'de 53 numaralı port neden kontrol edilmelidir?

Let’s Encrypt entegrasyon rehberine göre tüm challenge türlerinde yetkili DNS sunucularına TCP ve UDP üzerinden gelen 53 numaralı port trafiğine izin verilmelidir.

Kaynaklar

[1] Integration Guide – Let's Encrypt

[2] Challenge Types – Let's Encrypt