Let's Encrypt Wildcard Sertifikaları: ACME DNS-01 Doğrulama ile Otomatik Kurulum ve Yönetim

 · 

Let's Encrypt Wildcard Sertifikaları: ACME DNS-01 Doğrulama ile Otomatik Kurulum ve Yönetim

Let's Encrypt Wildcard Sertifikaları: ACME DNS-01 Doğrulama ile Otomatik Kurulum ve Yönetim

Çok sayıda subdomain kullanan dinamik uygulamalar veya mikroservis mimarileri için her bir subdomain'e ayrı ayrı SSL/TLS sertifikası sağlamak operasyonel bir yüktür. Wildcard sertifikalar, bu karmaşıklığı ortadan kaldırarak *.alanadiniz.com gibi tüm alt alan adlarını tek bir sertifika ile güvence altına almanın en etkin yolunu sunar. Let's Encrypt'in sunduğu ücretsiz wildcard sertifikalar, ACME (Automated Certificate Management Environment) protokolünün DNS-01 doğrulama yöntemi sayesinde kolayca elde edilebilir ve otomatikleştirilebilir.

Neden Wildcard ve DNS-01?

Wildcard sertifikalar, sürekli değişen veya çok sayıda alt alan adına sahip ortamlarda (örneğin, müşteri başına bir subdomain ayrılan SaaS platformları) güvenlik yönetimini basitleştirir. Let's Encrypt, bu tür sertifikaları vermek için sadece DNS-01 doğrulama yöntemini destekler. HTTP-01 doğrulama yöntemi, belirli bir alt alan adının kontrolünü doğrulamak için web sunucusu üzerinde bir dosya oluşturmayı gerektirirken, wildcard için bu pratik değildir. DNS-01 yöntemi ise, alan adınızın DNS kayıtlarına özel bir TXT kaydı ekleyerek alan adı üzerindeki kontrolünüzü kanıtlamanızı ister.

ACME DNS-01 Doğrulama Mekanizması

ACME istemcisi, Let's Encrypt sunucusundan bir doğrulama talebi aldığında, sertifika istediğiniz alan adı için özel bir token oluşturur. Bu token, alan adınızın DNS kayıtlarına _acme-challenge.alanadiniz.com şeklinde bir TXT kaydı olarak eklenmelidir. Let's Encrypt sunucusu, bu kaydı DNS üzerinden sorgular ve eşleşmeyi doğruladıktan sonra sertifika verme sürecini başlatır.

Bu süreç, DNS kayıtlarını programatik olarak güncelleyebilen otomasyon araçları (örneğin, AWS Route 53, Cloudflare API'leri) ile birleştiğinde son derece verimli hale gelir. İstemci, DNS API'si aracılığıyla TXT kaydını ekler, Let's Encrypt doğrulamasını bekler ve sertifika verildikten sonra kaydı temizler.

Uygulama: acme.sh ile AWS Route 53 Entegrasyonu

acme.sh, Let's Encrypt sertifikalarını yönetmek için popüler ve güçlü bir ACME istemcisidir. Özellikle farklı DNS sağlayıcıları için zengin API entegrasyonuna sahiptir. Bu senaryoda, wildcard sertifikayı AWS Route 53 üzerinde barındırılan bir alan adı için nasıl alacağımızı inceleyelim.

Ön Koşullar:

  • Bir AWS hesabı ve Route 53 üzerinde yönetilen bir alan adı.
  • acme.sh istemcisi kurulmuş bir Linux sunucu veya Docker ortamı.
  • AWS kimlik bilgileri: AWS_ACCESS_KEY_ID ve AWS_SECRET_ACCESS_KEY. Bu kimlik bilgilerinin, Route 53 üzerinde ChangeResourceRecordSets iznine sahip bir IAM kullanıcısına ait olması gerekir. En güvenlisi, bu izinleri yalnızca belirli bir Hosted Zone için tanımlamaktır.

Adım 1: AWS Kimlik Bilgilerini Ortam Değişkeni Olarak Tanımlama

acme.sh, AWS kimlik bilgilerini ortam değişkenleri üzerinden okuyabilir. Bu, doğrudan dosyalara yazmaktan daha güvenli bir yöntemdir.

export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

Not: Üretim ortamlarında bu değişkenleri bir sır yönetimi servisi (örneğin, AWS Secrets Manager, HashiCorp Vault) üzerinden dinamik olarak almak veya IAM rolü atamaları (EC2 instance profili) kullanmak çok daha güvenlidir.

Adım 2: Wildcard Sertifika Talep Etme

acme.sh istemcisini kullanarak wildcard sertifikası ve ana alan adı için tek bir komutla talepte bulunabiliriz:

acme.sh --issue \
  --dns dns_aws \
  -d yourdomain.com \
  -d *.yourdomain.com \
  --server letsencrypt

Bu komut çalıştırıldığında, acme.sh otomatik olarak:

  • yourdomain.com ve *.yourdomain.com için Let's Encrypt'ten doğrulama tokenları alır.
  • AWS API'lerini kullanarak Route 53 üzerinde _acme-challenge.yourdomain.com ve _acme-challenge.yourdomain.com (ikinci wildcard için) TXT kayıtlarını oluşturur.
  • Let's Encrypt sunucusunun bu kayıtları doğrulaması için kısa bir süre bekler.
  • Doğrulama başarılı olduğunda sertifikayı indirir ve sunucuya kaydeder.
  • Oluşturduğu TXT kayıtlarını Route 53'ten otomatik olarak siler.

Başarılı bir kurulumun ardından sertifika dosyalarınız ~/.acme.sh/yourdomain.com/ dizini altında bulunacaktır.

Adım 3: Otomatik Yenileme

Let's Encrypt sertifikaları 90 gün geçerlidir ve otomatik olarak yenilenmeleri gerekir. acme.sh, bunu otomatik olarak halleden bir cronjob kurar. Ancak, sertifikaları web sunucunuza veya yük dengeleyicinize (örn. Nginx, Apache, AWS ALB/CloudFront) dağıtmak için bir "deploy hook" kullanmanız gerekir.

acme.sh --install-cert -d yourdomain.com \
  --key-file /etc/ssl/private/yourdomain.com.key \
  --fullchain-file /etc/ssl/certs/yourdomain.com.fullchain.pem \
  --reloadcmd "systemctl reload nginx"

Bu komut, sertifikaları belirtilen dizinlere kopyalar ve Nginx'i yeniden yükleyerek yeni sertifikaların devreye girmesini sağlar. Yenileme sırasında acme.sh bu --reloadcmd'yi otomatik olarak çalıştıracaktır.

Üretim Ortamında Dikkat Edilmesi Gerekenler

  • IAM Rolleri ve İzinler: En az yetki prensibini uygulayın. Route 53'te sadece ChangeResourceRecordSets iznine ve yalnızca ilgili Hosted Zone'a erişime sahip bir IAM rolü veya kullanıcısı oluşturun. EC2 üzerinde çalışıyorsa, bu izinleri bir Instance Profile olarak atayın.
  • Sır Yönetimi: AWS kimlik bilgilerini düz metin olarak saklamayın. AWS Secrets Manager veya çevre değişkenleri ile çalışırken dikkatli olun.
  • Otomasyon ve İzleme: Sertifika yenileme süreçlerini izleyin. Başarısız yenilemeler için uyarı mekanizmaları kurun (örneğin, CloudWatch alarmları, Slack bildirimleri).
  • Sertifika Dağıtımı: Sertifikaların yenilendikten sonra doğru hizmetlere (web sunucuları, API Gateway, yük dengeleyiciler, CDN'ler) otomatik olarak dağıtıldığından emin olun. AWS Certificate Manager (ACM) entegrasyonu, bu süreçleri AWS ekosisteminde daha da basitleştirebilir, ancak ACM doğrudan wildcard Let's Encrypt sertifikalarını yönetmez; bunları içeri aktarmanız gerekir.

Sonuç

Let's Encrypt wildcard sertifikaları ve ACME DNS-01 doğrulama yöntemi, modern, dinamik ve ölçeklenebilir altyapılar için kritik bir güvenlik bileşenidir. acme.sh gibi güçlü istemciler ve bulut sağlayıcıların DNS API'leri ile birleştiğinde, bu sertifikaların temini, yenilenmesi ve dağıtımı tamamen otomatik hale getirilebilir. Bu otomasyon, operasyonel yükü azaltırken, web uygulamalarınızın sürekli güvenliğini ve erişilebilirliğini sağlar.

← Blog Listesine Dön