Teknoloji

ACME Challenge Seçimi: HTTP-01, DNS-01 ve TLS-ALPN-01

ACME Doğrulama Yöntemini Seçme

ACME doğrulama yöntemi, sertifika isteyen sistemin neyi kontrol edebildiğine göre seçilir: port 80’deki HTTP yanıtı, kamusal DNS kayıtları veya port 443’teki TLS sonlandırma noktası. Wildcard gereksinimi ve istemci desteği de seçimi sınırlar. Uygun yöntem, yalnız ilk sertifika alınırken değil sonraki yenilemelerde de çalışabilmelidir.

Bu rehber kamusal alan adları için HTTP-01, DNS-01 ve TLS-ALPN-01’i karşılaştırır. Örnekler özellikle Let’s Encrypt’in belgelediği davranışa dayanır; farklı CA ve istemcilerin desteklerini ayrıca kontrol edin. Hiçbir yöntem tek başına daha hızlı, daha güvenli veya kesintisiz değildir. Hedef, doğrulama önkoşullarını altyapıyla eşleştirmek ve başarısızlıkları sertifika süresi dolmadan görmektir.

Alan Adı Doğrulaması ve Sertifika Yaşam Döngüsü

ACME istemcisi CA hesabıyla bir sipariş başlatır, istenen adların kontrolünü challenge yanıtlarıyla doğrular ve diğer koşullar sağlandığında sertifika düzenleme sürecini tamamlar. HTTP-01 belirli bir URL’de yanıt, DNS-01 belirli bir TXT değeri, TLS-ALPN-01 ise özel TLS el sıkışmasında geçici doğrulama sertifikası kullanır. Challenge başarısı tek başına CAA yetkisinin, siparişin veya canlı dağıtımın tamamlandığı anlamına gelmez.

Let’s Encrypt challenge türleri rehberi sağlayıcıya özgü erişim ve yönlendirme koşullarını açıklar. RFC 8555 ACME standardı HTTP ve DNS doğrulamasıyla hesap/sipariş akışını tanımlar. TLS-ALPN-01 ayrı bir uzantıdır. Gerçek sertifikayı aldıktan sonra özel anahtar eşleşmesi, SAN kapsamı, zincir ve sunucuya dağıtım ayrıca doğrulanmalıdır; doğru challenge seçimi bu kontrollerin yerine geçmez.

HTTP-01: Port 80 Üzerinden Doğrulama

HTTP-01 Yanıtı Nasıl Sunulur?

HTTP-01’de CA, http://example.com/.well-known/acme-challenge/<TOKEN> yolunu port 80’den sorgular. Yanıt yalnız token değildir; istemci token ile hesap anahtarının parmak izinden key authorization değerini üretir. Bunu istemciniz hazırlamalıdır. Panel otomasyonu kullanılacaksa panelin mevcut sürümünün doğrulama, zamanlanmış yenileme ve sertifikayı hizmete yükleme işlevlerini kontrol edin.

HTTP-01 Hangi Altyapılara Uyar?

Wildcard gerekmeyen, port 80’i kamusal olarak erişilebilir bir site için HTTP-01 uygun olabilir. Webroot yöntemi, çalışan web sunucusunun challenge dosyasını sunmasını sağlar. Standalone yöntem ise kendi dinleyicisini açar; port 80’i mevcut Nginx veya Apache kullanıyorsa aynı adrese bağlanamaz. Trafik yolunu ve istemci çalışma biçimini seçmeden otomatik yenilemeyi etkinleştirmek, sonradan port çakışmasına yol açabilir.

CDN, Yönlendirme ve Çoklu Sunucu Koşulları

Let’s Encrypt HTTP-01’e port 80’den başlar; en fazla 10 yönlendirmeyi, yalnız HTTP/HTTPS ve 80/443 portlarına kabul eder. HTTPS yönlendirmesinde mevcut sertifikanın geçerliliğini denetlememesi bu ilk erişim şartını kaldırmaz. CDN veya WAF güncel challenge yanıtını iletmeli, kimlik doğrulama ve önbelleğe alınmış 404 gibi engeller bulunmamalıdır. Birden fazla A/AAAA adresi veya ön uç varsa her olası yol doğru yanıtı sunmalıdır; sticky session tek başına yeterli değildir.

DNS-01: TXT Kaydıyla Doğrulama

TXT Kaydının Adı ve Değeri

DNS-01’de example.com için kayıt sahibi _acme-challenge.example.com, api.example.com için _acme-challenge.api.example.com olur. TXT değeri, key authorization’ın SHA-256 özetinin base64url kodlamasıdır; sıradan token veya rastgele metin değildir. İstemci bunu üretir. CA’nın kamusal DNS üzerinden beklenen değeri bulması gerekir; yalnız iç DNS görünümünde duran kayıt yeterli olmaz.

Wildcard ve Özel Ağ Gereksinimleri

Bu üç yöntem arasında Let’s Encrypt wildcard düzenlemesi için DNS-01 kullanır. *.example.com yalnız tek etiketli eşleşmeleri kapsar; kök alanı ve daha derin adları kapsamaz. DNS-01, web sunucusuna dışarıdan challenge isteği gelmesini gerektirmediği için özel origin ve CDN arkasındaki sistemlerde de kullanılabilir. Müşteri alan adları için müşteri yetkisi, DNS güncelleme erişimi veya açık challenge delegasyonu gerekir. SaaS özel alan adları ve DNS-01 otomasyonu rehberi bu mimariyi ele alır.

DNS Yetkileri, Delegasyon ve Önbellekler

Otomasyon için desteklenen DNS API’si veya güncellenebilir ayrı bir doğrulama alanı gerekir. Let’s Encrypt, challenge adındaki CNAME veya NS delegasyonunu izleyebilir; istemcinin kayıt yazma desteği ayrıca yapılandırılır. _acme-challenge.example.com delegasyonu, farklı konumdaki _acme-challenge.api.example.com kaydını kendiliğinden kapsamaz. Yetkili sunucularda yayım ve pozitif/negatif önbellek sürelerini hesaba katın. Aynı ad için eşzamanlı doğrulama değerleri varsa yalnız tamamlanan işin TXT değerini temizleyin.

TLS-ALPN-01: Port 443 Üzerinden Doğrulama

ALPN ve Geçici Sertifika Nasıl Çalışır?

TLS-ALPN-01’de CA kamusal TCP 443’e bağlanır, doğrulanan adı SNI ile ve acme-tls/1 protokolünü ALPN ile belirtir. Bu ifade ayrı bir HTTP mesajı değildir. Yanıtlayıcı, yalnız o DNS adını SAN’da içeren geçici, kendinden imzalı sertifikayı ve beklenen özeti taşıyan kritik acmeIdentifier uzantısını sunar. Normal web sertifikası bunun yerine geçmez. TLS 1.2 veya üstü gerekir; port 443 dışarıdan erişilebilir kalmalıdır.

TLS Sonlandırma Noktasının Desteği

Port 80 kullanılamıyorsa, wildcard gerekmiyorsa ve kamusal TLS uç noktası yöntemi destekliyorsa TLS-ALPN-01 değerlendirilebilir. Her ACME istemcisi, proxy veya Ingress bunu desteklemez. 443’te çalışan bir servisin bulunması yeterli değildir; servis doğrulama sertifikasını uygun SNI ve ALPN için sunabilmeli ya da TLS bağlantısını bunu yapabilen yanıtlayıcıya sonlandırmadan aktarmalıdır.

Proxy ve Paylaşılan TLS Uç Noktaları

CDN veya proxy TLS’i sonlandırdıktan sonra yalnız SNI/ALPN bilgisini arka uca aktarmak, CA’ya gerekli sertifikayı göstermez. Challenge dış uçta karşılanmalı veya gerçek TLS passthrough kurulmalıdır. Paylaşılan uç noktada bir kiracı başka kiracının adını doğrulayabilecek yetkiye sahip olmamalıdır. RFC 8737 TLS-ALPN-01 standardı özel sertifika ve protokol koşullarını tanımlar; doğrulama sertifikasını normal site sertifikası olarak dağıtmayın.

Altyapıya Göre Yöntem Seçimi

WordPress ve Paylaşımlı Hosting İçin Panel Otomasyonu

Panelin yönettiği WordPress sitesinde önce panelin desteklediği ACME akışını belirleyin. HTTP-01 seçiliyorsa DNS yönlenmesi, port 80 ve challenge yolu çalışmalıdır. Uygulamanın yönlendirmeleri veya güvenlik eklentileri bu yolu engelleyebilir. İlk düzenlemeden sonra zamanlanmış yenilemenin ve hizmetin yeni sertifikayı yüklemesinin izlendiğini doğrulayın; tek başarılı deneme gelecekteki çalışmayı garanti etmez.

CDN Arkasındaki Bir Sitede Doğrulama

CDN, HTTP challenge yolunu güvenilir biçimde iletebiliyorsa HTTP-01 kullanılabilir. Bunu sağlamak mümkün değilse DNS-01 web yönlendirmesine bağımlılığı kaldırabilir; karşılığında DNS yetkisi ve yayılım yönetimi gerekir. CDN kenar sertifikası ile origin sertifikasının ayrı yaşam döngüleri olabilir. Origin için alınan sertifikanın tarayıcının gördüğü kenar sertifikası olduğunu varsaymayın.

Wildcard Kapsamını Belirleme

*.example.com, app.example.com gibi tek düzey adlara uyar; example.com veya api.app.example.com için ek kapsam gerekir. Kök ve wildcard aynı sertifikada istenirse ayrı yetkilendirmeler aynı _acme-challenge.example.com adında farklı TXT değerleri gerektirebilir. Etkin değerleri birlikte koruyun. Kapsama uyan yeni bir ad eklenmesi tek başına yeni sertifika gerektirmese de yönlendirme, anahtar erişimi, yenileme ve dağıtım sürdürülmelidir.

Port 80 Kapalıyken Seçenekler

Port 80 kapalıyken DNS-01, desteklenen kamusal DNS doğrulamasıyla kullanılabilir. TLS-ALPN-01 de ancak erişilebilir 443 uç noktası özel challenge’ı karşılıyorsa seçenektir. Bir tünelin uygulamayı yayımlaması bu TLS yeteneğini otomatik sağlamaz. İki yöntemin de koşulları yoksa mevcut ağ veya DNS tasarımında değişiklik gerekir; yalnız istemcide yöntemi değiştirmek yeterli olmaz.

Kubernetes ve cert-manager

cert-manager’ın belgelenmiş ACME solver türleri HTTP01 ve DNS01’dir; TLS-ALPN-01 desteği varsaymayın. HTTP01 akışında geçici acmesolver Pod ve Service kaynaklarını cert-manager oluşturur; Ingress üzerinden bunlara trafik yönlendirilir. Ingress denetleyicisi burada kendi yerleşik ACME solver’ı olarak çalışmaz. Uygun ingressClassName veya denetleyicinin desteklediği eşdeğer seçenek, dış port 80 erişimi ve NetworkPolicy izinleri gerekir. DNS01 seçilirse sağlayıcı yetkileri ve solver seçimi ayrıca yapılandırılır.

Yenileme Otomasyonunu Doğrulama

ACME İstemcisinin Desteğini Kontrol Etme

Certbot, acme.sh, lego veya cert-manager seçerken gereken challenge, CA, DNS sağlayıcısı ve dağıtım desteğini gerçek sürümde doğrulayın. İstemcinin hesap anahtarı, yenileme durumu ve sertifika dosyalarını koruyun. Kendi kendine kontrolün başarılı olması CA’nın aynı ağ veya DNS görünümünü gördüğünü kanıtlamaz. Çıkış kodlarını, hata nedenini ve gerçek uç noktanın sertifika süresini birlikte izlemek daha anlamlıdır.

DNS Kimlik Bilgilerini Sınırlama

DNS kimlik bilgilerini mümkün olan en dar alan ve kayıt yetkileriyle sınırlayın; kod deposuna veya günlük çıktısına koymayın. Sağlayıcı yalnız geniş zone yetkisi veriyorsa ayrı doğrulama bölgesi veya ayrı otomasyon sunucusu düşünülebilir. cert-manager varsayılan olarak CNAME hedefini izleyerek kayıt yazmaz; bu akış için cnameStrategy: Follow ve hedef bölgeyi güncelleyecek kimlik bilgileri gerekir. Hesap veya DNS sağlayıcısı değiştiğinde bu erişimi yeniden doğrulayın.

HTTP Challenge Yolunu Test Etme

Doğru hostname ve challenge yolunu dış ağdan sınayın; yalnız kendi tarayıcınızdan tek başarılı istek yeterli değildir. Bütün A/AAAA adreslerini, CDN davranışını ve yük dengeleyici hedeflerini kontrol edin. Eski 404 önbelleğini temizlemek ve gelecekte o yolu önbellek dışına almak farklı işlemlerdir. Yalnız challenge için gereken istisnayı uygulayın; bütün sitenin güvenlik denetimlerini kapatmayın. Test dosyası yol erişimini gösterir, gerçek ACME doğrulamasının tamamını değil.

TLS-ALPN-01 İçin SNI ve ALPN Kontrolleri

Doğrulama sırasında kamusal uçta doğru SNI, yalnız acme-tls/1 ALPN seçimi ve uygun geçici sertifikanın sunulduğunu kontrol edin. Çoklu TLS ön uçları varsa bütün olası doğrulama yolları beklenen yanıtı vermelidir. Günlük ayrıntısını artırmak yardımcı olabilir; ancak hesap veya özel anahtar sırrını kaydetmeyin. Normal HTTPS trafiği için sertifika seçimi ile challenge yanıtını birbirinden ayırın.

Oran Limitleri ve Kontrollü Tekrarlar

Hataları DNS erişimi, challenge içeriği, CAA, hesap, kota ve dağıtım olarak ayırın. Let’s Encrypt staging ortamı test içindir, üretimden ayrı hesap ve limitleri vardır; sertifikaları normal tarayıcı güveni sağlamaz. Hata nedenini düzeltmeden sınırsız sipariş üretmeyin ve CA’nın yeniden deneme zamanını izleyin. Alternatif CA ayrıca hesap, CAA yetkisi ve uyumlu dağıtım gerektirir. Let’s Encrypt challenge rehberi erişim koşulları için başvuru kaynağıdır.

Doğrulamadan Canlı Sertifikaya

HTTP-01 için kamusal port 80 ve doğru HTTP yanıtı, DNS-01 için yetkili kamusal TXT yönetimi, TLS-ALPN-01 için erişilebilir ve özel protokolü destekleyen 443 uç noktası gerekir. Wildcard ve istemci desteği seçimi daraltır. CAA yetkisi her yöntemde ayrıca geçerlidir. Bu şartları ölçerek karar verin; “en hızlı” veya “kur ve unut” gibi genellemeler yenileme tasarımını doğrulamaz.

Seçilen yolu desteklenen test ortamında doğrulayın, üretim hesabıyla gereken süreci tamamlayın ve gerçek TLS sonlandırma noktasında yüklenen sertifikayı kontrol edin. Desteklenen ARI akışını veya sertifikanın gerçek geçerlilik süresini dikkate alarak toparlanma payı bırakın. RFC 8555 ile RFC 8737 protokol ayrıntılarını açıklar. DNS, proxy, hesap veya istemci değiştiğinde aynı kontrolleri yineleyin; geçmişte çalışan otomasyonun süresiz çalışacağı varsayılmamalıdır.

Sıkça Sorulan Sorular

Let’s Encrypt wildcard için DNS-01 kullanır. *.example.com tek etiketli eşleşmeleri kapsar; kök alanı veya daha derin adları kapsamaz. Doğru challenge adı, müşteri yetkisi, DNS güncelleme yolu ve etkin TXT değerlerinin korunması gerekir.

Önce dışarıdan görülen challenge yanıtını, yönlendirmeleri, WAF davranışını ve önbelleğe alınmış eski yanıtları kontrol edin. Yol sürdürülemiyorsa yetkili DNS otomasyonu ile DNS-01 kullanılabilir; bu da kimlik bilgisi ve yayılım yönetimi gerektirir.

DNS-01 kamusal DNS üzerinden çalışabilir. TLS-ALPN-01 ise ancak CA ve istemci destekliyorsa, wildcard gerekmiyorsa ve erişilebilir TCP 443 uç noktası özel ALPN/sertifika yanıtını sunabiliyorsa uygundur. Tünel veya sıradan HTTPS desteği tek başına yeterli değildir.
↑