Teknoloji

Let’s Encrypt Wildcard SSL Otomasyonu: DNS-01 ile cPanel, Plesk ve Nginx’te Zahmetsiz Kurulum ve Yenileme Nasıl Yapılır?

İçindekiler

Wildcard’a Neden İhtiyaç Duyarız ve DNS-01 Bu Hikâyede Nasıl Bir Rol Oynar?

Hiç başınıza geldi mi? Bir projede her şey yolunda giderken, bir anda yeni bir alt alan adı açma ihtiyacı doğar. Mesela bir anda app.domain.com, sonra test için staging.domain.com, bir de hızlıca bir cdn.domain.com. Her alt alan için tek tek SSL kurmak hem yorucu hem de hataya açık. İşte o günlerden birinde, kahvemi yudumlarken düşündüm: “Bir wildcard sertifika olsa, hepsi otomatik yenilense, ben de bu işten kurtulsam.”

Wildcard sertifika dediğimiz şey, domain’inizin başına yıldız koyup bütün alt alan adlarını tek atışta güvenceye almak. *.domain.com gibi. Fakat bunun küçük bir sırrı var: Tarayıcıların güvendikleri bu sertifikayı Let’s Encrypt’ten alırken, klasik HTTP doğrulaması (siteye özel bir dosya koyma yöntemi) işe yaramıyor. Yerine DNS-01 denilen, DNS’e bir TXT kaydı ekleyerek yapılan doğrulama gerekiyor. İlk bakışta biraz uğraştırıcı gibi dursa da, bir kez otomasyona bağladınız mı, her yenileme kendi kendine halloluyor.

Bu yazıda, DNS-01 ile wildcard sertifikayı nasıl kurabileceğimizi, cPanel, Plesk ve Nginx üzerinde işin otomasyon tarafını nasıl akışa alabileceğimizi adım adım anlatacağım. Aralarda küçük püf noktaları, kendi yaşadığım minik kazalar ve “şunu sakın unutmayın” türünden notlar da olacak. Mesela şunu baştan söyleyeyim: Wildcard sertifika root domain’i (domain.com) kapsamaz, onu ayrıca eklemeyi unutursanız tarayıcı bir noktada homurdanır.

DNS-01’in Mantığı, Küçük Tuzaklar ve Güvenli Bir Başlangıç

TXT kaydıyla kanıtlama nedir, neden bu kadar kritik?

DNS-01, “Bu alan adının sahibi kim?” sorusunu DNS üzerinden yanıtlatır. Sertifika istemcisi sizin için özel bir TXT kaydı üretir ve alan adınızın DNS’ine bunu yerleştirmenizi ister. Let’s Encrypt kontrol edip “Evet, bu kayıt yerinde” dediğinde, top sizde değil, artık sertifika düzenlenir. Güzel tarafı şu: HTTP trafiğine karışmadığınız için staging ortamlar, kapalı ağlar ve hatta CDN arkasındaki sitelerde bile güvenli ilerleyebilirsiniz.

TTL, yayılım ve o meşhur bekleme

DNS değişikliklerinin yayılması bazen sabır testi olur. TXT kaydını eklersiniz, ama doğrulama henüz görmeyebilir. Burada TTL değerleri devreye girer. Ben genelde kritik geçişlerde TTL’i geçici olarak düşürürüm, işler biter bitmez tekrar makul seviyeye çekerim. Bu konuyu daha derli toplu düşünmek isterseniz, şu rehberdeki yaklaşım çok iş görüyor: Zero-Downtime taşıma için TTL stratejileri ve DNS yayılımını hızlandırma.

CAA kayıtları: “Bu alan için kim sertifika verebilir?”

Bir başka küçük tuzak: CAA kayıtları. Alan adınızda CAA varsa, “Şu CA dışında kimse sertifika veremez” diyebilirsiniz. Let’s Encrypt’in önünü kesen bir CAA kaydı varsa, doğrulama geçse bile sertifika gelmez. CAA’yı kontrol edin, gerekiyorsa Let’s Encrypt’e izin verin. CAA ve diğer DNS kayıtları için pratik bir hatırlatma isterseniz, şu derli toplu yazı hoşunuza gidebilir: DNS kayıtları A’dan Z’ye ve sık yapılan küçük hatalar.

Güvenlik: API anahtarları, kimlik bilgilerinin saklanması

DNS-01’i otomatikleştirirken genelde bir DNS sağlayıcısının API’si ile konuşuruz. Bu noktada API anahtarlarını minimum yetkilerle oluşturmak, salt DNS düzenleme izni vermek ve dosya izinlerini sıkı tutmak önemli. Ben genelde kimlik bilgilerini yalnızca ilgili servis kullanıcısının okuyabildiği bir dosyada, yedeksiz ve izole tutarım. Eğer yedeklemek gerekirse, şifreli ve erişim kontrollü bir yerde saklamak en mantıklısı.

cPanel’de Wildcard ve DNS-01: Gerçekçi Bir Yol Haritası

AutoSSL hayal kırıklığı değil, doğru araç meselesi

cPanel’in AutoSSL özelliği günlük hayat kurtarıcıdır, ama çoğu kurulumda wildcard için gereken DNS-01’i değil, HTTP doğrulamasını izler. Bu nedenle doğrudan AutoSSL ile wildcard almak, çoğu senaryoda duvara toslamak demektir. Moral bozmak yok. Çözüm, acme.sh veya Certbot gibi bir ACME istemcisiyle DNS sağlayıcınıza bağlanmak ve sertifikayı dışarıda üretip cPanel’e içe aktarmaktır.

acme.sh ile pratik senaryo

Benim sahada en çok kullandığım yöntemlerden biri acme.sh. Kurulum hafiftir, DNS sağlayıcılarının çoğu için hazır entegrasyonlar vardır ve wildcard’ı sorunsuz alır. Genel akış şöyle olur: DNS sağlayıcınız (örneğin Cloudflare, Route 53 veya başka bir servis) için acme.sh’nin istediği ortam değişkenlerini hazırlarsınız, komutu çalıştırırsınız, o da TXT kaydını otomatik ekler ve doğrulamayı tamamlar. Ardından sertifikayı uygun dizine yazıp cPanel’e yüklersiniz. acme.sh hakkında tüm detayları isterseniz resmi sayfasına göz atabilirsiniz: acme.sh projesi.

Önemli not: Alan adını hem domain.com hem de *.domain.com olarak eklemeyi unutmayın. Wildcard kök alanı kapsamaz. İkisini birden doğrulamak, gerçek hayatta en hatasız yol.

Certbot ve DNS eklentileriyle alternatif

Certbot da sağlam bir seçenek. Cloudflare, Route 53 gibi popüler sağlayıcılar için DNS eklentileri var. Bu eklentiler kimlik bilgilerinizi güvenli bir dosyada tutar, doğrulama sırasında TXT kaydını otomatik ekler, doğrulama biter bitmez de temizler. Eklenti seçimi ve kullanımına dair net bir rotayı Certbot’un DNS eklentileri belgesinde bulabilirsiniz.

Sertifikayı cPanel’e yüklemek

Elinizde fullchain ve private key olduğunda, cPanel içinden “SSL/TLS” alanına girip sertifikayı yükleyebilirsiniz. WHM tarafında iseniz, çoklu hesaplar için aynı sertifikayı ilgili vHost’lara atamak da mümkün. Bu noktada benim işimi en çok kolaylaştıran şey, yenileme sonrası cPanel’e yüklemeyi de otomatikleştirmek. acme.sh, yenileme sonrasında tetiklenen bir komutla sertifikayı doğru yere kopyalayabilir ve gerekirse bir Apache/LiteSpeed yeniden yüklemesi başlatabilirsiniz.

Püf noktası: Yenileme dönemlerinde log’ları izlemek güzel fikir. Bir şey ters giderse, çoğu zaman ya CAA engeli ya da DNS sağlayıcısının API limitleri karşımıza çıkar. Bu yüzden önce bir test yenilemesi yapmak, sonra kademeli geçmek, geceleri kafayı yastığa daha rahat koydurur.

Plesk’te Wildcard Sertifika: Eklenti ile Tek Nefeste

Let’s Encrypt eklentisi ve DNS-01

Plesk tarafında işler bir tık daha ferah olabilir. Plesk’in Let’s Encrypt eklentisi, wildcard için DNS-01’i destekler ve bazı DNS sağlayıcılarıyla doğrudan konuşabilir. Eklenti üzerinden “Wildcard’ı etkinleştir” seçeneğini işaretleyince, size ya manuel TXT ekleme yolunu gösterir ya da desteklenen bir entegrasyon varsa API bilgilerinizi ister ve tek seferde bitirir.

Otomatik yenileme ve bildirim

Plesk’in hoşuma giden tarafı, yenilemeyi de yönetim panelinden takip edebilmeniz. Bildirimleri açarsanız, sertifika bitmeden hatırlatma düşer. Yine de ilk kurulumdan sonra bir kez manuel yenilemeyi tetikleyip sürecin uçtan uca çalıştığını görmek iyi bir alışkanlık. Çünkü bazı DNS sağlayıcılarında TXT kayıtlarının oluşması birkaç dakika sürebilir; Plesk bekler ama siz de log’lara bir göz atıp içinizi rahatlatın.

Ekstra güvenlik katmanı

Wildcard sertifika ile trafiği şifreledikten sonra, sayfalarınızın tarayıcıda daha sıkı kurallarla açılmasını istiyorsanız HSTS gibi başlıkları da düşünebilirsiniz. Bu konuda pratik bir özet isterseniz, şu rehber iyi bir başlangıç: HTTP güvenlik başlıkları rehberi: HSTS, CSP ve diğerleri. Sertifika tamam, başlıklar yerinde, Plesk tarafında işler çoğunlukla çiçek gibi yürür.

Nginx ve Çıplak Sunucuda Otomasyon: Certbot mu acme.sh mi?

DNS sağlayıcınızı seçin, API anahtarınızı hazırlayın

Nginx üzerinde çalışan bir VPS ya da bare-metal sunucunuz mu var? Harika. Burada iki popüler yol var: Certbot + DNS eklentisi veya acme.sh. Ben genelde DNS sağlayıcıma göre karar veriyorum. Cloudflare kullanıyorsam iki araç da çok rahat. AWS Route 53 ise Certbot’un Route 53 eklentisi ciddi konfor sağlıyor. Temel fikir aynı: Kimlik bilgilerini bir dosyada saklayın, TXT kaydını otomatik ekleyip kaldıran eklentiyi çağırın, sertifikayı alın, Nginx’e tanımlayın.

Certbot ile örnek akış

Cloudflare için bir “API Token” oluşturup sadece “Zone DNS Edit” yetkisi verin. Bu token’ı sunucuda, sadece root’un okuyabildiği bir dosyada tutun. Ardından Certbot’u ilgili eklentiyle çağırın. Komut yapısı, kurulumunuza göre değişir ama kabaca şöyle düşünün: DNS eklentisini etkinleştir, domain.com ve *.domain.com için sertifika üret, yenilemeyi cron’a yaz. Ayrıntılı yol haritası için resmi dokümantasyon net konuşuyor: Certbot DNS eklentileri rehberi.

acme.sh ile örnek akış

acme.sh’yi kurduktan sonra, örneğin Cloudflare değişkenlerini ortamınıza alırsınız. Sonra komutu çalıştırırsınız; acme.sh TXT kaydını ekler, doğrular, sertifikayı indirir. Bir güzelliği de, yenileme sonrasında otomatik olarak Nginx reload tetikleyebilmeniz. Bu sayede trafiğinizde bir kesinti olmaz. acme.sh’nin sade anlatımını ve tüm DNS entegrasyonlarını tek yerde görmek için projenin sayfası işinizi görecektir: acme.sh projesi.

Nginx yapılandırması ve güvenli dosya izinleri

Sertifika dosyaları genelde fullchain ve privkey şeklinde gelir. Nginx sanal host’ınızda bunlara referans verirsiniz ve ardından bir reload ile yayına alırsınız. Benim alışkanlığım, anahtarı sadece root okuyabilir, Nginx kullanıcısı sadece gerektiği kadar erişebilir şekilde tutmak. Ayrıca, staging ve production sertifika yollarını ayırmak, test sırasında yanlış dosyayı işaretleme riskini de azaltır.

Yenileme, İzleme ve “Gece Uykusu Kaçmasın” Stratejileri

Otomatik yenileme nasıl sağlama alınır?

Let’s Encrypt sertifikaları kısa ömürlüdür, bu yüzden yenileme otomasyonu olmazsa olmaz. Certbot zaten sistemde bir timer ya da cron ile gelir. acme.sh de öyle. Ben yine de bir bildirim mekanizması kurarım: Yenileme denemesi başarısız olursa bana bir e-posta düşsün, bir de log’lar merkezi bir yerde toplansın. Böylece “yoksa sertifika bitti mi” heyecanı yaşamam.

Önce test, sonra prod: staging ile rate limit duvarına çarpmayın

İlk otomatizasyonu kurarken, Let’s Encrypt’in üretim ortamına yüklenmeden önce bir staging denemesi yapmak çok tatlı bir önlem. Böylece bir hata varsa onu orada yakalarsınız, rate limit’e takılmadan süreci cilalarsınız. DNS-01 de bazen kayıt gecikmeleriyle şaşırtır, test ortamında bunu görmek sinirleri alır.

TTL, CDN ve propagation pratikleri

Özellikle multi-tenant ortamlarda TXT kaydının yayılmasını beklerken geçen süreyi kısaltmak için TTL’i geçici olarak düşürmek iş görür. CDN kullanıyorsanız DNS TXT için genelde sorun olmaz, ama ara katmanların DNS ile ilgili optimizasyonları nadiren de olsa karışabilir. Bu yüzden ilk denemeyi sade bir DNS sağlayıcısı üstünde yapmak, sonra CDN’i plana katmak, kafa karışıklığını azaltır.

Operasyonel ipuçları: yedek, kayıp anahtar ve geri dönüş planı

Bir kez şunların başınıza geldiğini düşünün: API anahtarınızı kaybettiniz veya bir güvenlik olayı nedeniyle derhal yenilemek zorundasınız. Plan basit olmalı: Yeni token oluştur, entegrasyon dosyasını güncelle, test yenilemesini çalıştır, canlıya al. Bu sırada yapılandırmayı kısa bir not defterinde sürümleyerek tutmak, değişikliklerin kimden-ne zaman geldiğini bilmek açısından muhteşem rahatlatıcıdır. Sertifikalar ve yapılandırmalar için akılcı bir yedek politikası da her zamanki gibi kurtarıcıdır; isterseniz şu yol haritası nefes aldırır: 3-2-1 yedekleme stratejisi ve otomatik yedekler.

Sık Görülen Hatalar ve “Ah keşke” Dedirten Ayrıntılar

Wildcard kök alanı kapsamaz, ikisini birlikte doğrulayın

Bu en sık unutulanlardan. *.domain.com aldınız diye domain.com kendiliğinden dahil olmaz. Komutta veya eklentide ikisini de belirtmeyi alışkanlık haline getirin. Bir gün ana alanı bir yönlendirmeye bağlarsınız ve “Güvenli değil” uyarısı karşınıza çıkar; o gün “Keşke ikisini de ekleseydim” dersiniz.

CAA kilidi ve yanlış yetkiler

CAA kayıtları bazen eski bir konfigürasyondan kalma olabilir. Let’s Encrypt’i engelleyen bir CAA varsa, doğrulama pırıl pırıl geçse de sertifika gelmez. DNS tarafında bir göz gezdirin, gerekiyorsa CAA’ya Let’s Encrypt’i ekleyin. Eğer CAA konusunda hatırlatıcılara ihtiyacınız varsa, DNS kayıtları rehberi burada da yardım eder.

DNS sağlayıcısı API limitleri ve kimlik bilgisi güvenliği

Çok sayıda alanı aynı anda yeniliyorsanız, DNS sağlayıcınızın API limitlerine çarpabilirsiniz. Akışı biraz seyreltmek, alanları gruplar hâlinde yenilemek, gecikmeli cron’lar tanımlamak akıllıca olur. Kimlik bilgilerini gereksiz yetkilerle geniş tutmayın. Sadece DNS düzenleme izni verin ve dosya izinlerini sıkı tutun. Bu sadece güvenlik değil, hatayı küçültme sanatı.

HTTP başlıklarını unutmamak

Sertifika tamam, trafik şifreli. Güzel. Peki tarayıcıya “Bu siteyi yalnızca HTTPS ile ziyaret et” dediniz mi? HSTS gibi başlıklar burada devreye girer. Zamanla CSP ve arkadaşlarıyla sayfaları daha güvenli kılmak mümkün. Hem performansa, hem güvene dokunan bu başlıklar için şu rehbere göz atmak iyi gelir: HTTP güvenlik başlıkları rehberi.

DNS-01’in ne istediğini unutmamak

Bazen manuel doğrulama yapmanız gerekir. Bu durumda daima şu akılda kalsın: Let’s Encrypt sizden tam olarak hangi isimde ve hangi değerle TXT kaydı istiyor, onu birebir ekleyin. Fazladan boşluk, yanlış zone, alt zone’lar… Küçük gibi görünen ayrıntılar moral bozabilir. Emin olmadığınızda, Let’s Encrypt’in resmi açıklamasına dönüp bir kez daha okuyun: Let’s Encrypt DNS-01 açıklaması.

Kapanış: Kafa Rahatlığına Giden Kısa Yol

Wildcard sertifikayı DNS-01 ile otomasyona bağladığınızda, aslında sadece bir sertifika kurmuş olmuyorsunuz. Bir düzen kuruyor, alt alanlarınızı çoğaltırken güvenliği dert etmemeyi öğreniyorsunuz. cPanel’de acme.sh veya Certbot ile dışarıda üretip içeri almak, Plesk’te eklentinin sırtını sıvazlamak, Nginx’te DNS eklentisiyle TXT kaydını otomatik yönetmek… Hepsi aynı huzurlu yere çıkıyor: sertifika yenileme takvimini unutabileceğiniz o rahatlık.

Benim son tavsiyem şu olur: İlk kurulumu staging’de deneyin, TTL’leri geçici olarak hafifletin, CAA’yı kontrol etmeyi unutmayın ve log’ları ilk yenilemeye kadar bir göz ucuyla takip edin. Bir de, trafiğiniz şifreli akarken tarayıcıya daha iyi davranmayı unutmayın; HSTS ve arkadaşlarıyla web’inizi parlatın. DNS tarafında daha geniş bir perspektif ararsanız, yüksek erişilebilirlik için Anycast DNS ve otomatik failover da ilginizi çekebilir, zamanla bu kabiliyetleri aynı orkestraya dahil etmek keyif verir.

Umarım bu yazı, “Wildcard’ı otomatiğe bağlasak da rahatlasak” diyen herkese pratik bir yol haritası sunar. Bir gün bir alt alan daha eklerken tarayıcıya güvenle gülümser, “İyi ki uğraşmışım” dersiniz. Takıldığınız bir yer olursa, not düşmekten çekinmeyin. Bir dahaki yazıda görüşmek üzere.

Sıkça Sorulan Sorular

Hayır, wildcard sadece *.domain.com alt alanlarını kapsar. Kök alan için domain.com’u ayrıca eklemelisiniz. Kurulumda ikisini birlikte doğrulamak en sağlam yol.

Önce TTL’i geçici olarak düşürmeyi ve kayıtların doğru zone’a eklendiğini kontrol etmeyi deneyin. Birkaç dakika beklemek normaldir. Log’lara bakmak da nerede takıldığını gösterir.

acme.sh veya Certbot ile DNS-01 kullanıp sertifikayı dışarıda üretin, ardından cPanel’e yükleyin. Yenileme sonrası yüklemeyi de küçük bir komutla otomatik hâle getirebilirsiniz.