ACME ile Otomatik TLS Sertifika Yönetimi: Doğrulama Yöntemi, Kota ve Durum Saklama
HTTP-01, DNS-01 ve TLS-ALPN-01 arasında seçim, Let's Encrypt kotasının sizi nerede yakalayacağı, yedeklenmesi gereken asıl durum ve bölünmüş DNS, AAAA kaydı ve şeffaflık günlükleri gibi tuzaklar.
Otomatik sertifika yönetimi "kur, unut" diye satılır ve çoğu kurulumda ilk üç ay gerçekten öyle gider. Sorun, sistemi bir kez daha kurmak zorunda kaldığınızda, geçici test ortamları çoğaldığında ya da bir alan adının DNS'i başka bir ekibin elinde olduğunda başlar. Bu yazı ACME protokolüyle çalışan bir sertifika akışını (Let's Encrypt en yaygın örnek) baştan doğru kurmak için hangi kararların önemli olduğunu, kotanın sizi nerede yakalayacağını ve başınıza gelmesi neredeyse kesin olan tuzakları anlatır.
Üç doğrulama yöntemi, tek gerçek karar
ACME, sertifikayı vermeden önce alan adının sizde olduğunu üç yoldan biriyle doğrular:
HTTP-01: CA, alan adının 80 portunda /.well-known/acme-challenge/ altındaki bir dosyayı ister. Kurulumu en kolay olanıdır; tek şartı alan adının doğrudan o sunucuya çözülmesi ve 80 portunun dünyaya açık olmasıdır.
DNS-01: _acme-challenge.<alanadı> adında bir TXT kaydı yazarsınız. Sunucunun internete açık olması gerekmez, joker sertifika (*.example.com) yalnızca bu yolla alınabilir. Bedeli, ACME istemcisinin DNS sağlayıcınıza yazma yetkisi olan bir API anahtarı taşımasıdır.
TLS-ALPN-01: Doğrulama 443 portunda, özel bir ALPN protokolüyle yapılır. 80 portunu hiç açamadığınız ortamlar için vardır; bunun dışında HTTP-01 ile aynı kısıtları taşır.
Tarafımız net: tek bir herkese açık sunucunuz varsa HTTP-01 yeterlidir ve daha az yetki gerektirir. Birden fazla sunucu, iç ağdaki servisler, geçici ortamlar ya da joker ihtiyacı ortaya çıktığı anda DNS-01'e geçin. Çoğu ekip HTTP-01 ile başlayıp her istisnayı elle yamayarak yıllarca sürünür; ikinci istisnada geçmek daha ucuzdur. DNS API anahtarının yetkisini ise mümkünse tek bir bölgeyle ya da yalnızca TXT kayıtlarıyla sınırlayın. Birçok sağlayıcı bunu destekler; desteklemiyorsa doğrulama için ayrı, delege edilmiş bir alt bölge açmak (CNAME ile _acme-challenge kaydını o bölgeye yönlendirmek) hem güvenli hem yaygın bir çözümdür.
Kota sizi ilk ne zaman vurur
Let's Encrypt'in limitleri günlük kullanımda hissedilmez, çünkü kayıtlı alan adı başına haftada onlarca sertifikaya izin verir. Sizi vuran senaryo şudur: her CI koşusu ya da her deneme ortamı kendine yeni bir alt alan adı üretir ve her biri için ayrı sertifika ister. Limit alt alan adına değil kayıtlı alan adının tamamına (example.com) aittir; test ortamlarınız üretimle aynı alan adını paylaşıyorsa, tükenen kotayı üretim de öder ve o hafta gerçek bir yenileme de reddedilir.
Üç önlem birlikte çalışır:
Sertifika akışını test ederken staging ortamını kullanın. Adresi https://acme-staging-v02.api.letsencrypt.org/directory; limitleri çok daha gevşektir, verdiği sertifikaya tarayıcılar güvenmez ama akışın doğruluğunu ölçmeye yeter. certbot için --dry-run bayrağı tam olarak bunu yapar.
Geçici ortamlar için ayrı bir üst alan adı altında tek bir joker sertifika alın ve tüm ortamlar onu paylaşsın. Yüz ortam, sıfır yeni sertifika.
Aynı ad kümesi için tekrar tekrar sertifika istemeyin. "Yinelenen sertifika" limiti ayrıdır ve çok daha düşüktür; her yeniden kurulumda sıfırdan başlayan bir istemci bu limite iki günde çarpar.
Saklanması gereken şey sertifika değil, durumdur
En sık yapılan hata, sertifikayı yedekleyip ACME hesabını ve istemci durumunu yedeklememektir. Sertifika üç ayda zaten yenilenir; kaybolursa yeniden alınır. Ama hesap anahtarı ve "bu sertifika daha önce verildi" bilgisi kaybolursa istemci her şeyi yeni sayar, kota bir anda dolar ve yenileme muafiyetlerinden yararlanamazsınız.
Pratikte bu şu anlama gelir: certbot için /etc/letsencrypt dizininin tamamı, Traefik gibi araçlarda tek acme.json dosyası, Kubernetes'te cert-manager'ın hesap anahtarını ve verilmiş sertifikaları tuttuğu Secret nesneleri. Küme yedeğinizden Secret'ları dışlıyorsanız, felaket sonrası geri yüklemede önce kota hatasıyla tanışırsınız. Aynı sebeple ACME istemcisi durumu paylaşımlı bir diskte tutulacaksa tek bir örneğin yazmasını garanti edin; iki örnek aynı hesabı paylaşıp ayrı ayrı sipariş açarsa hem limiti hem de birbirinin sertifikasını ezer.
Çalışır örnekler
Tek sunucuda, web sunucusunun kök dizini üzerinden HTTP-01:
certbot renew komutu yalnızca süresi yaklaşan sertifikaları yeniler ve dağıtımla gelen zamanlayıcı bunu günde iki kez dener. Kendi cron'unuzu yazıyorsanız aynı sıklığı koruyun; "ayda bir" çalışan bir yenileme, tek bir DNS arızasında sertifikayı düşürür.
Kubernetes'te cert-manager ile DNS-01, Cloudflare örneği:
Önce server satırını staging adresiyle uygulayın, kubectl describe certificate çıktısında Ready gördükten sonra üretim adresine geçin. Bu iki satırlık disiplin, kotayı yakan kurulumların çoğunu önler.
Tuzaklar
AAAA kaydı varsa doğrulama IPv6 üzerinden gelir. Alan adına IPv6 adresi yayınlayıp o adreste servis vermiyorsanız HTTP-01 sessizce başarısız olur; hata mesajı IPv4'ün çalıştığını söylemez. Ya AAAA kaydını kaldırın ya da IPv6'yı gerçekten sunun.
CAA kaydı, ekip değişince unutulan bir kilittir.example.com. CAA 0 issue "letsencrypt.org" gibi bir kayıt başka CA'ları engeller; CA değiştirdiğinizde ya da bir alt alan adını başka bir sağlayıcıya verdiğinizde ilk bakılacak yer burasıdır.
Bölünmüş DNS, istemcinin ön kontrolünü kırar. cert-manager ve benzeri araçlar CA'ya gitmeden önce doğrulamayı kendileri dener. İç ağdaki DNS alan adını özel bir adrese çözüyorsa bu ön kontrol takılır, sipariş hiç açılmaz. DNS-01 kullanıyorsanız istemciye yalnızca dış çözümleyicileri sormasını söyleyin; cert-manager'da --dns01-recursive-nameservers ve --dns01-recursive-nameservers-only bayrakları tam bunun içindir.
Başarısız doğrulamanın kendi limiti vardır. Yanlış yapılandırılmış bir istemci dakikada bir deneyip aynı saat içinde o ad için kilitlenir. Otomatik yeniden deneme aralığını dakikalara değil saatlere ayarlayın.
Her herkese açık sertifika şeffaflık günlüklerine yazılır. İç servislerinizin adları (vault.internal.example.com gibi) herkese açık aranabilir hâle gelir. Joker sertifika bu adları saklar; tek tek ad bazlı sertifikalar saklamaz.
Joker sertifika tek seviye kapsar.*.example.com, a.example.com için geçerlidir ama example.com (apex) ve a.b.example.com için değildir. Apex'i ayrı ad olarak ekleyin.
80 portundaki yönlendirme doğrulamayı bozabilir. HTTP'yi HTTPS'e yönlendiriyorsanız /.well-known/acme-challenge/ yolunu bu kuralın dışında bırakın ya da yönlendirmenin geçerli bir sertifikaya düştüğünden emin olun; ilk kurulumda henüz sertifika olmadığı için ikincisi genellikle mümkün değildir.
Ne zaman bu yolu seçmemelisiniz
İnternete hiç çıkmayan ortamlar, kapalı ağlar ve yalnızca kendi istemcilerinizin konuştuğu iç servisler için herkese açık bir CA yanlış araçtır: doğrulama dışarıya bağımlıdır, adlarınız günlüklere düşer ve kısa ömürlü sertifikalar her yenilemeyi dış ağa bağlar. Bu durumda özel bir CA kurun. Bazı özel CA'lar ACME protokolünü konuşur, dolayısıyla aynı istemcileri ve aynı otomasyonu kullanmaya devam edersiniz; değişen tek şey güven zincirinin dağıtımıdır, yani kök sertifikayı istemcilere kendiniz ulaştırırsınız. Kurumsal doğrulama (OV/EV) isteyen bir uyumluluk gereksiniminiz varsa ya da istemci sertifikası (mTLS) dağıtıyorsanız da herkese açık ACME CA'lar bu işi yapmaz.
Herkese açık bir servisiniz varsa ve sertifika ömürleri sektör kararıyla giderek kısalıyorsa, otomasyonsuz sertifika yönetimi zaten bir seçenek olmaktan çıkmıştır. Doğru soru "otomatikleştirelim mi" değil, "hangi doğrulama yöntemiyle, durumu nerede saklayarak ve kotayı nasıl koruyarak" sorusudur.
1-5 tab geçiş ·
tab sonraki ·
esc geri al ·
↓ kaydır
> ls -lah ~/services/ --sort=tier
[OK] 25 records · 8 featured · 1 retainer · 16 standard
/02 hizmetler
services.tree
> note
· Fiyatlar USD cinsindendir. 6-12 günlük projelerde %7, 13+ günlük projelerde %14 hacim indirimi uygulanmaktadır. 100 adam-gün ve üzeri kapsamlı programlarda proje bazlı özel fiyatlandırma yapılır. Fiyatlar kapsam, aciliyet ve uzun dönem iş birliğine göre müzakere edilebilir.
> ls ~/products/ --open-source
[OK] 2 entries · 1 live · 1 pre-release
/03 ürünler
products.list
liveaçık kaynak · mit/prod/01
filex
her yere gömülebilen self-hosted dosya yöneticisi
tek go binary · vue/react/web-component embed · 5 storage sürücüsü · realtime collab · rbac · native multi-tenancy · ai ajanları için mcp server
Altyapıyı kurar, otomasyonu sağlar, sistemi ayakta tutar.
BRF Teknoloji, Bursa merkezli bir DevSecOps ve yazılım danışmanlık firmasıdır. Kubernetes cluster yönetiminden serverless platform kurulumuna, CI/CD pipeline tasarımından AI agent geliştirmeye kadar 25 farklı hizmet alanında çalışıyoruz.
İşimizin özü basit: sisteminizi ayağa kaldırır, otomatize eder ve gece 3'te sizi uyandırmayacak hale getiririz. Terraform ile altyapınızı kodlar, ArgoCD ile deploy sürecinizi GitOps'a taşır, Prometheus ile her şeyi izleriz. Bir şey bozulursa — biz bozulmadan önce müdahale ederiz.
Vendor lock-in'e karşıyız. Açık kaynak araçlarla, self-hosted çözümlerle ve endüstri standardı teknolojilerle çalışırız. Knative üzerinde kendi serverless platformunuzu kurarız, Kata Containers ile izole ederiz, Vault ile secret'larınızı yönetiriz. Her projeyi net kapsam, net süre, net fiyatla teslim ederiz.
DevSecOps & CI/CD
Kubernetes & Serverless
Infrastructure as Code
AI & Agent (MCP/ACP)
Güvenlik & Sıfır Güven
Full-Stack Geliştirme
Self-Hosted Çözümler
> grep -i question ~/faq.md
[OK] 3 entries · click to expand
[?]BRF Teknoloji'nin DevOps çözümleri hangi hizmetleri içerir?▾
CI/CD pipeline kurulumu, Kubernetes cluster yönetimi, container migrasyonu, Terraform ile altyapı otomasyonu, monitoring & alerting, şirket içi teknoloji kurulumları ve DevOps danışmanlık hizmetleri sunuyoruz.
[?]Yazılım geliştirme hizmetleriniz nelerdir?▾
MVP geliştirme, mevcut yazılım performans optimizasyonu, backend API geliştirme (Node.js, Go, Python) ve tam stack uygulama geliştirme hizmetleri sunuyoruz. Her projede teknik borç minimumda tutularak teslim edilir.
[?]Hangi DevOps araçlarıyla çalışıyorsunuz?▾
Kubernetes ve Docker’dan Talos Linux’a, Terraform ve OpenTofu’dan Ansible’a, Jenkins, GitLab CI/CD, GitHub Actions, ArgoCD, Flux, Helm ve Rancher’a kadar endüstri standardı araçlarla çalışıyoruz. İzleme ve hata takibinde Prometheus, Grafana, Loki, Tempo, OpenTelemetry ve GlitchTip; ağ katmanında Cilium ve Envoy; test otomasyonunda Playwright, Cypress, k6, Locust, Testcontainers ve Trivy kullanıyoruz. Projenizin ihtiyacına göre en uygun araç setini birlikte belirliyoruz.
brf.sh / 2026
·bursa/tr·
timezone utc+3·
tüm sistemler nominal
> ./connect --target=brf.sh
/05 iletişim
contact.txt
> cat contact.txt
[email][email protected] [phone]+90 530 871 2248 [location] Üçevler Mah. İzmir Yolu Cad 241D 16120 Nilüfer/Bursa [hours] Hafta içi 09:00 — 18:00 UTC+3 [eta] <24s iş günü
[OK] handshake ready
· turnstile enabled
· yanıt süresi: <24s · saat dilimi UTC+3 / bursa
CI/CD Pipeline Kurulumu
GitHub Actions, GitLab CI/CD ile otomatik build, test ve deploy süreçleri.
Mevcut ya da sıfırdan bir repo için otomatik build, test ve deploy pipeline'ı kurulur. GitHub Actions, GitLab CI/CD veya tercih edilen araç kullanılır. Staging + production ortamları için ayrı akışlar tanımlanır.
Mevcut uygulamaların container mimarisine taşınması.
Mevcut uygulamaların container mimarisine taşınması. Docker image tasarımı, Compose yapılandırması ve Kubernetes manifest'lerine dönüştürme. İleri düzey izolasyon için Kata Containers / gVisor dahil edilebilir.
Prometheus, Grafana, Loki ile altyapı ve servis izleme.
Prometheus + Grafana stack kurulumu, servis ve altyapı metrikleri için dashboard'lar, kritik eşikler için alert tanımları. İsteğe bağlı: Zabbix, Loki log aggregation.
GitLab, Nextcloud, VPN, mail sunucusu gibi şirket içi araçlar.
GitLab, Mattermost, Nextcloud, mail sunucusu, VPN, iç monitoring gibi araçların şirket sunucularında kurulumu. Docker Compose veya Kubernetes üzerinde deploy edilir.
MCP/ACP agent'lar, RAG pipeline, multi-agent orchestration, model serving.
LLM entegrasyonu (OpenAI, Claude, Gemini, lokal modeller), MCP (Model Context Protocol) ve ACP (Agent Communication Protocol) ile tool-augmented AI agent'lar. RAG pipeline, multi-agent orchestration, model serving (vLLM/Ollama). Mevcut iş süreçlerine yapay zeka katmanı.
Apache Kafka, RabbitMQ, NATS ile event-driven data pipeline. Apache Airflow ile ETL/ELT orkestrasyon, real-time data akışı, CDC (Change Data Capture). Data lake/warehouse tasarımı, schema registry, dead letter queue yönetimi.
Paketler
Kafka/RabbitMQ kurulumu + temel producer/consumer
$3,500
5–7 adam/gün
ETL pipeline (Airflow + source → warehouse)
$5,200
8–12 adam/gün
Tam event-driven architecture (CDC + streaming + DLQ)
ELK Stack veya Loki + Grafana ile merkezi log yönetimi. OpenTelemetry ile distributed tracing, Jaeger/Tempo entegrasyonu. Log retention politikası, structured logging standartları, anomaly detection. Tüm servislerde uçtan uca observability.
Playwright, Cypress ile E2E test otomasyonu, k6/Gatling ile yük testi. CI/CD pipeline'a entegre pre-deploy quality gate, test coverage raporlama, visual regression testing. AI-assisted test generation ile test yazım süresini %60'a kadar düşürme.
Backstage veya Port ile internal developer portal kurulumu. Self-service ortam oluşturma, golden path template'leri, service catalog, TechDocs entegrasyonu. Developer experience (DX) metrikleri, DORA metrics takibi, cognitive load azaltma.
Paketler
Backstage/Port kurulumu + service catalog
$3,900
6–8 adam/gün
Golden path templates + self-service ortam
$6,500
10–14 adam/gün
Tam platform (portal + templates + DORA + DX metrikleri)
Toplanan Kişisel Verileriniz, Toplanma Yöntemi ve Hukuki Sebebi
Kimliğinizi belirli ya da belirlenebilir kılan her türlü bilgi "kişisel veri" olarak kabul edilmektedir. Web sitemizi ziyaret ettiğinizde veya hizmetlerimizi kullandığınızda; ad, soyad, e-posta adresi, telefon numarası gibi iletişim bilgileriniz, IP adresiniz ve tarayıcı çerez verileri otomatik ya da yarı-otomatik yollarla toplanabilir. Bu veriler, 6698 sayılı Kişisel Verilerin Korunması Kanunu'nun 5. maddesinde belirtilen "bir sözleşmenin kurulması veya ifasıyla doğrudan doğruya ilgili olması" ve "ilgili kişinin temel hak ve özgürlüklerine zarar vermemek kaydıyla, veri sorumlusunun meşru menfaatleri için veri işlenmesinin zorunlu olması" hukuki sebeplerine dayanılarak işlenmektedir.
Kişisel Verilerinizin İşlenme Amacı
Toplanan kişisel verileriniz; hizmetlerimizin sunulması ve iyileştirilmesi, müşteri taleplerinin karşılanması, yasal yükümlülüklerin yerine getirilmesi, bilgi güvenliği süreçlerinin yürütülmesi ve iletişim faaliyetlerinin yönetilmesi amaçlarıyla işlenmektedir. Verileriniz, belirtilen amaçlarla sınırlı ve ölçülü olarak işlenir; amacın ortadan kalkması halinde silinir, yok edilir veya anonim hale getirilir.
Toplanan Kişisel Verilerin Kimlere ve Hangi Amaçlarla Aktarılabileceği
Kişisel verileriniz; yasal düzenlemelerin gerektirdiği hallerde kamu kurum ve kuruluşlarına, hizmetlerin sunulması amacıyla iş ortaklarımıza ve teknik altyapı sağlayıcılarına, hukuki uyuşmazlıklarda avukatlar ve danışmanlara aktarılabilir. Aktarım, Kanun'un 8. ve 9. maddelerine uygun olarak, gerekli teknik ve idari tedbirler alınarak gerçekleştirilir.
Kişisel Verileri İşlenen Kişi Olarak Haklarınız
6698 sayılı Kanun'un 11. maddesi uyarınca; kişisel verilerinizin işlenip işlenmediğini öğrenme, işlenmişse bilgi talep etme, işlenme amacını ve amacına uygun kullanılıp kullanılmadığını öğrenme, yurt içinde veya yurt dışında aktarıldığı üçüncü kişileri bilme, eksik veya yanlış işlenmişse düzeltilmesini isteme, Kanun'un 7. maddesindeki şartlar çerçevesinde silinmesini veya yok edilmesini isteme, yapılan işlemlerin aktarıldığı üçüncü kişilere bildirilmesini isteme, münhasıran otomatik sistemler vasıtasıyla analiz edilmesi suretiyle aleyhinize bir sonucun ortaya çıkmasına itiraz etme ve kanuna aykırı işleme sebebiyle zarara uğramanız halinde zararın giderilmesini talep etme haklarına sahipsiniz. Bu haklarınızı kullanmak için web sitemizdeki iletişim kanalları aracılığıyla bize başvurabilirsiniz.
Şartlar ve Koşullar
Şartlar ve Koşullar
1. Hizmet Kapsamı ve Değişiklikler
BRF Teknoloji, sunduğu yazılım geliştirme, DevOps danışmanlık, altyapı kurulumu ve teknik destek hizmetlerini bu şartlar ve koşullar çerçevesinde yürütür. Hizmet kapsamı, her proje için ayrıca belirlenir ve karşılıklı mutabakat ile kesinleştirilir. BRF Teknoloji, sunduğu hizmetlerin kapsamını, fiyatlandırmasını ve teknik detaylarını önceden bildirmek kaydıyla güncelleme hakkını saklı tutar.
2. Gizlilik Politikası
Hizmetlerimiz kapsamında toplanan kişisel veriler, Gizlilik Politikamız çerçevesinde işlenir. Detaylı bilgi için Gizlilik Politikası sayfamızı inceleyebilirsiniz.
3. Hizmet Kullanımı ve Sorumluluklar
Müşteriler, sunulan hizmetleri yalnızca yasal ve etik çerçevede kullanmayı kabul eder. Hizmetlerin kötüye kullanılması, üçüncü taraf haklarının ihlali veya yasa dışı faaliyetler için kullanılması durumunda BRF Teknoloji hizmeti askıya alma veya sonlandırma hakkına sahiptir. Müşteri, proje kapsamında sağladığı bilgilerin doğruluğundan ve güncelliğinden sorumludur.
4. Ödeme Şartları
Ödeme koşulları proje bazında belirlenir ve proje başlangıcında karşılıklı mutabakat ile kesinleştirilir. Aksi belirtilmedikçe, faturalar proje tesliminden itibaren 15 gün içinde ödenir. Geciken ödemelerde aylık %2 gecikme faizi uygulanabilir.
5. İptal ve İade Politikası
İptal talepleri, hizmetin başlangıç tarihinden en az 7 gün önce yazılı olarak bildirilmelidir. Başlamış projelerde, tamamlanan iş oranına göre ücretlendirme yapılır. Proje kapsamında özel olarak geliştirilen yazılım ve altyapı bileşenleri için iade yapılmaz.