Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
113 yazı bulundu
Certificate'ları İzlemek ve Kesintileri Önlemek: Envanter, Expiry Alert'leri, TLS Testleri ve Gerçek Olay Örnekleri
DevOps SERİ 08

Certificate'ları İzlemek ve Kesintileri Önlemek: Envanter, Expiry Alert'leri, TLS Testleri ve Gerçek Olay Örnekleri

Certificate kesintilerini önlemek için diskteki dosyayı değil, istemcinin gördüğü certificate'ı dışarıdan ölçersin: blackbox exporter'ın last_chain metric'ine ömre göre eşikli bir alarm, probe_success alarmı, CT log ve CAA ile envanter. Reload edilmemiş yenilemeyi, eksik intermediate'ı, yanlış SAN'ı, earliest_cert_expiry'yi yanıltan cross certificate'ı ve saat kaymasını laboratuvarda üretiyor, alarmları promtool ile, TLS config'ini testssl.sh ile test ediyoruz.

14 Kas 2026 15 dk 2
mTLS ve Internal Certificate'lar: ASP.NET Core'da Client Certificate Authentication ve Kendi CA'nı İşletmek
DevOps SERİ 07

mTLS ve Internal Certificate'lar: ASP.NET Core'da Client Certificate Authentication ve Kendi CA'nı İşletmek

mTLS'te istemci de bir certificate ve private key ile attığı imzayla kimliğini kanıtlar; public CA'lar client authentication EKU'sunu bıraktığı için bunun için offline root'lu kendi internal CA'n gerekir. ASP.NET Core'da AddCertificate ile CustomRootTrust, issuer ve CN tabanlı partner eşlemesi kuruyor, Kestrel'in TLS katmanındaki sessiz reddini, revocation'ı ve Nginx'in certificate'ı header ile iletmesinin private key olmadan nasıl taklit edilebildiğini gerçek koşularla görüyoruz.

14 Kas 2026 14 dk 2
HTTPS'i Zorunlu Kılmak: HTTP→HTTPS Redirect, HSTS'i Kademeli Açmak, Preload ve Mixed Content
DevOps SERİ 06

HTTPS'i Zorunlu Kılmak: HTTP→HTTPS Redirect, HSTS'i Kademeli Açmak, Preload ve Mixed Content

HTTPS'i zorunlu kılmak için redirect'i TLS'in bittiği katmanda yaparsın, API'lerde redirect yerine HTTP'yi 400 ile reddedersin ve HSTS'i 5 dakikadan bir yıla kademeli açarsın; includeSubDomains'ten önce alt domain envanteri şart. Proxy arkasında UseHttpsRedirection döngüsünü ve secure'suz cookie'yi, 301'in POST'u GET'e çevirmesini, HSTS'in HTTP-only alt domain'i kilitlemesini ve Angular build'indeki mutlak http:// URL'in mixed content olarak bloklanmasını gerçek koşularla görüyoruz.

14 Kas 2026 16 dk 2
Yönetilen Platformlarda Certificate: Caddy, Azure App Service, Key Vault, Front Door ve Kubernetes'te cert-manager
DevOps SERİ 05

Yönetilen Platformlarda Certificate: Caddy, Azure App Service, Key Vault, Front Door ve Kubernetes'te cert-manager

Managed platformlarda certificate'ı platform alır ve yeniler, ama her birinin seni yakalayacak bir sınırı vardır: Caddy /data volume'ü olmadan rate limit'e takılır, App Service managed certificate wildcard vermez, Front Door doğrudan CNAME ister, cert-manager her yenilemede key'i değiştirir. Caddy, cert-manager ve Envoy Gateway'i Pebble ile gerçek koşularla çalıştırıp pinning'in yenilemede nasıl kırıldığını görüyoruz.

14 Kas 2026 17 dk 2
.NET'te ve Kestrel'de Certificate: dev-certs, PEM/PFX Yükleme, SNI, Yenilemede Reload ve HttpClient Doğrulaması
DevOps SERİ 04

.NET'te ve Kestrel'de Certificate: dev-certs, PEM/PFX Yükleme, SNI, Yenilemede Reload ve HttpClient Doğrulaması

Kestrel, configuration'daki PEM veya PFX certificate'ını restart'sız yeniden yükler ama yalnızca Path'i izler, yaklaşık beş saniyede fark eder ve endpoint'i yeniden başlatır; root olmayan kullanıcıyla Certbot'un dosyalarını okuyamaz, bu yüzden bir deploy hook gerekir. dev-certs'in Linux'taki SSL_CERT_DIR ayarını, ServerCertificateSelector ile SNI'ı ve HttpClient'ta doğrulamayı kapatmadan CustomRootTrust ile internal CA'ya güvenmeyi gerçek koşularla görüyoruz.

14 Kas 2026 15 dk 2
Let's Encrypt ve ACME ile Otomatik Certificate: Certbot, Nginx, Wildcard ve ARI ile Yenileme
DevOps SERİ 03

Let's Encrypt ve ACME ile Otomatik Certificate: Certbot, Nginx, Wildcard ve ARI ile Yenileme

ACME ile certificate almak account, order, authorization, challenge ve finalize adımlarından oluşur; Certbot bunu Nginx'te webroot veya nginx plugin'iyle, wildcard'ı DNS-01 ile yapar ve ARI sayesinde CA'nın önerdiği zamanda yeniler. Pebble üzerinde gerçek koşularla iptal edilen bir certificate'ın ARI ile kendiliğinden yenilenmesini, profilleri, 6 günlük ve IP certificate'larını ve 80 portunu kapatmanın bedelini görüyoruz.

14 Kas 2026 18 dk 2
Certificate Yaşam Döngüsü: CSR, Domain Validation, Certificate Transparency, Revocation ve 47 Günlük Gelecek
DevOps SERİ 02

Certificate Yaşam Döngüsü: CSR, Domain Validation, Certificate Transparency, Revocation ve 47 Günlük Gelecek

Bir certificate CSR ile istenir, CA domain'i HTTP-01, DNS-01 veya TLS-ALPN-01 ile doğrular, certificate CT log'larına yazılır ve iptali artık OCSP'den çok CRL'e ve kısa ömre dayanır. SC-081v3 ile maksimum ömür 15 Mart 2026'da 200, 2027'de 100, 2029'da 47 güne iniyor; crt.sh, gerçek bir CRL ve .NET ile CSR üretimi üzerinden elle yenilemenin neden bittiğini görüyoruz.

14 Kas 2026 13 dk 2
Bir TLS Certificate'ın İçinde Ne Var? X.509, SAN, Chain of Trust ve Dosya Formatları
DevOps SERİ 01

Bir TLS Certificate'ın İçinde Ne Var? X.509, SAN, Chain of Trust ve Dosya Formatları

Bir TLS certificate'ı, bir public key'i SAN listesindeki isimlere bağlayan ve bir CA'nın imzaladığı X.509 belgesidir; istemci ona, imzalar zinciri trust store'undaki bir root'a ulaştığı için güvenir. openssl ve .NET X509CertificateLoader ile alanları okuyor, wildcard'ın tek seviyelik sınırını, Let's Encrypt'in cross-sign'lı Generation Y zincirini ve eksik intermediate'ın curl'ü kırıp .NET'te AIA ile nasıl gizlendiğini gerçek koşularla görüyoruz.

14 Kas 2026 16 dk 1
Kubernetes 1.33–1.37 Yenilikleri: Native Sidecar, In-Place Resize, preStop Sleep, Gateway API ve ingress-nginx Sonrası
DevOps SERİ 19

Kubernetes 1.33–1.37 Yenilikleri: Native Sidecar, In-Place Resize, preStop Sleep, Gateway API ve ingress-nginx Sonrası

Kubernetes 1.33–1.37 arasında uygulama geliştiriciyi en çok etkileyenler native sidecar (1.33), preStop sleep (1.34), in-place resize (1.35), user namespace'ler (1.36) ve HPA tolerance (1.37). SIGTERM'ü yok sayan sidecar'ın Job'u nasıl 39 saniyeye uzattığını, externalIPs ve Endpoints deprecation'larını, KYAML'ı, ingress-nginx'in emekliliğini ve Gateway API v1.7'yi gerçek çıktılarla görüyoruz.

8 Kas 2026 10 dk 44
Eski Kubernetes Manifest'lerini Okumak: dockershim, PodSecurityPolicy ve Kaldırılan API'ler (1.16–1.25)
DevOps SERİ 18

Eski Kubernetes Manifest'lerini Okumak: dockershim, PodSecurityPolicy ve Kaldırılan API'ler (1.16–1.25)

2018–2021 dönemi manifest'lerini çevirirken yalnız apiVersion'ı değiştirmek yetmez: apps/v1 selector ister, kubectl convert eski varsayılanları (sonsuz progressDeadlineSeconds, maxUnavailable: 1) manifest'e yazar, Ingress'in backend yapısı değişti. dockershim'in kaldırılmasının Docker image'larını etkilemediğini, PodSecurityPolicy'nin yerine Pod Security Admission'ı ve pluto ile taramayı gerçek çıktılarla görüyoruz.

8 Kas 2026 9 dk 46
Uçtan Uca: .NET + Angular Uygulamasını Managed Kubernetes'e Almak (AKS, EKS, GKE) ve Production Checklist'i
DevOps SERİ 17

Uçtan Uca: .NET + Angular Uygulamasını Managed Kubernetes'e Almak (AKS, EKS, GKE) ve Production Checklist'i

Managed Kubernetes'te control plane sağlayıcıda kalır; image çekmek ve cloud'a erişmek için node kimliği ve workload identity kullanırsan pipeline'da ve cluster'da tek bir cloud secret'ı kalmaz. AKS, EKS ve GKE farklarını, OIDC ile AKS'e deploy eden ve actionlint'ten geçen workflow'u, pluto'nun göremediği deprecated API istemcilerini ve kind'da çalışan kod halindeki production checklist'ini görüyoruz.

8 Kas 2026 11 dk 38
Kubernetes'te Debugging: CrashLoopBackOff, ImagePullBackOff, Pending ve kubectl debug
DevOps SERİ 16

Kubernetes'te Debugging: CrashLoopBackOff, ImagePullBackOff, Pending ve kubectl debug

Pod hatalarında sıra hep aynıdır: get ile belirtiyi, describe ile event'leri, logs --previous ile uygulamanın sesini oku, gerekirse kubectl debug ile shell'siz pod'a ephemeral container sok. Pending, ImagePullBackOff, CrashLoopBackOff, OOMKilled ve port uyuşmazlığını, PID 1 olarak asılı kalan .NET process'ini ve limite yakın pod'da dotnet-dump'ın pod'u nasıl öldürdüğünü gerçek çıktılarla görüyoruz.

8 Kas 2026 11 dk 38
Blog Haritası