Skip to content

Bölüm 4 / 15

PKI

Sertifika otoriteleri, sertifika zinciri.

17 dakikalık okuma

Önceki ders açık anahtarlı kriptografiyi kurdu ve arkasında cevaplanmamış bir soru bıraktı: elindeki açık anahtarın gerçekten karşı tarafa ait olduğunu nereden biliyorsun? Bu soru cevapsız kalırsa tüm asimetrik kripto anlamsızdır — araya giren biri kendi açık anahtarını sunar ve her şeyi okur. PKI, bu tek soruyu çözmek için kurulmuş bir güven altyapısıdır: sertifikalar, sertifika otoriteleri, zincirler, iptal mekanizmaları ve güven depoları. 13-02'de TLS sertifikasının zincirini görmüştük; bu ders o zincirin nasıl kurulduğunu, nasıl doğrulandığını ve nerelerden koptuğunu anlatır — kamu tarafındaki karşılığı olan e-imza ve zaman damgası dâhil.

01Ne öğreneceksin

  • PKI'nın çözdüğü tek problem: açık anahtarı bir kimliğe bağlamak
  • X.509 sertifikası: alanları, SAN'ın CN'i neden emekliye ayırdığı
  • CA hiyerarşisi: kök / ara / yaprak, çevrimdışı kök ve zincir doğrulama adımları
  • Sertifika yaşam döngüsü: anahtar üretimi, CSR, doğrulama seviyeleri, yenileme
  • İptal: CRL ↔ OCSP, stapling, soft-fail problemi ve kısa ömürlü sertifika yaklaşımı
  • Güven deposu: işletim sistemi/tarayıcı/çalışma zamanı farkları, kurumsal TLS kesme, sabitleme (pinning)
  • Kurum içi CA ve mTLS istemci sertifikaları
  • Kamu bağlamı: e-imza, nitelikli sertifika, mobil imza, zaman damgası
  • Üretimde en sık görülen sertifika hataları ve teşhisleri

02Çözülen problem: anahtarı kimliğe bağlamak

Açık anahtarlı kriptografi tek başına şu saldırıyı engellemez: sen bir siteye bağlanırken araya giren saldırgan, sitenin açık anahtarı yerine kendi açık anahtarını sana verir. Sen o anahtarla şifreler, o çözer, okur, sonra gerçek sunucuya iletir. Matematiğin hiçbir kusuru yoktur; kusur, anahtarın kime ait olduğunu bilmemektedir. Buna ortadaki adam saldırısı denir.

Çözüm için üç yol vardır:

  • Elden teslim — anahtarı yüz yüze almak. Güvenlidir, ölçeklenmez.
  • Güven ağı (web of trust) — tanıdıklarının imzalarına güvenmek. PGP'nin yaklaşımıdır; internet ölçeğinde işlemedi.
  • Hiyerarşik güven — herkesin önceden güvendiği bir otoritenin, "bu açık anahtar bu kimliğe aittir" diye imzaladığı bir belge üretmesi. Bu belgeye sertifika, otoriteye CA (Certificate Authority), tüm sisteme PKI denir.

Yani PKI, güven problemini ortadan kaldırmaz; taşır: artık her siteye ayrı ayrı güvenmek yerine, sınırlı sayıda köke güvenirsin. Bu devretmenin bedeli de vardır ve 7. bölümde göreceğiz: köke güvenmek, onun imzaladığı her şeye güvenmektir.

PKI'nın bileşenleri: CA (sertifikayı imzalayan), RA (Registration Authority — başvuranın kimliğini doğrulayan birim), sertifika deposu (yayınlama), iptal mekanizması (CRL/OCSP) ve sertifika politikası/uygulama esasları (CP/CPS — CA'nın hangi kurallarla işlediğini anlatan yazılı belgeler).

03Sertifika nedir: X.509 alanları

Bir sertifika, özünde şu üçlünün imzalanmış hâlidir: kimlik + açık anahtar + geçerlilik koşulları. Standart biçimi X.509'dur. Önemli alanlar:

AlanNe tutarPratikte dikkat
SubjectSertifikanın sahibi (CN, O, OU, C…)TLS'te CN artık kullanılmaz, ad doğrulaması SAN'dan yapılır
Subject Alternative Name (SAN)Sertifikanın geçerli olduğu alan adları/IP'lerAsıl alan budur; birden çok ad, joker (*.kurum.gov.tr) burada tanımlanır
Issuerİmzalayan CA'nın adıZincirin bir üst halkasına işaret eder
Public KeySahibin açık anahtarı + algoritmaRSA 2048+ ya da EC P-256
ValidityBaşlangıç ve bitiş tarihiGenel güven sertifikalarında süre kısaldı; izlenmezse kesinti sebebi
Serial NumberCA içinde benzersiz numaraİptal listelerinde bu numarayla anılır
SignatureCA'nın imzası ve algoritmasıSHA-1 imzalı sertifika bugün geçersiz sayılır
Key Usage / Extended Key UsageAnahtarın hangi amaçla kullanılabileceğiSunucu kimliği, istemci kimliği, kod imzalama, e-posta… amaç dışı kullanım reddedilir
Basic ConstraintsCA: true/false, yol uzunluğuYaprak sertifikanın başka sertifika imzalamasını engelleyen alan
AIA / CDPAra sertifika ve iptal listesi adresleriZincir tamamlama ve iptal kontrolü buradan yürür

Biçim ve dosya uzantıları da sık karıştırılır: PEM Base64 metin biçimidir (-----BEGIN CERTIFICATE-----), DER ikili biçimdir; .crt/.cer/.pem genelde sertifika, .key özel anahtar, .pfx/.p12 ise sertifika + özel anahtarı birlikte taşıyan parola korumalı pakettir. Bir .pfx dosyasını paylaşmak, çoğu zaman özel anahtarı paylaşmak demektir — dikkat edilecek nokta budur.

04Zincir: kök, ara, yaprak

Sertifikalar tek başına durmaz, zincir oluşturur:

Kök CA (kendinden imzalı, güven deposunda)
   └── Ara CA (kök tarafından imzalanmış)
          └── Yaprak / uç varlık sertifikası (senin sunucun)

Neden ara katman var? Çünkü kök CA'nın özel anahtarı çevrimdışı tutulur — fiziksel kasada, ağa bağlı olmayan bir donanım güvenlik modülünde (HSM). Kök anahtarı sızarsa tüm dünyada milyonlarca sertifika bir anda güvenilmez hâle gelir ve kökün değiştirilmesi yıllar sürer (çünkü kök, işletim sistemi ve tarayıcı güncellemeleriyle dağıtılır). Ara CA ise günlük imzalama işini yapar; sızarsa yalnız o ara CA iptal edilir, kök ayakta kalır. Bu, güvenlik tasarımında etki alanını sınırlama ilkesinin en temiz örneğidir.

Zincir doğrulama adımları (13-02'de TLS tarafından yapılıyordu, şimdi içeriden bakıyoruz):

  1. Sunucunun sunduğu yaprak sertifikanın imzası, issuer olarak gösterilen ara CA'nın açık anahtarıyla doğrulanır.
  2. Aynı işlem ara CA için tekrarlanır; zincir güven deposundaki bir köke ulaşana kadar yukarı çıkılır. Köke ulaşamıyorsa doğrulama başarısızdır.
  3. Her sertifikanın geçerlilik tarihi kontrol edilir.
  4. Her ara halkanın Basic Constraints alanında CA: true olduğu ve Key Usage'ın sertifika imzalamaya izin verdiği doğrulanır.
  5. Yaprak sertifikanın SAN alanı bağlanılan ana bilgisayar adıyla eşleşir mi diye bakılır.
  6. İptal durumu sorgulanır (5. bölüm).

Üretimdeki bir numaralı hata — eksik ara sertifika

Sunucu, yaprak + ara sertifikaları birlikte sunmak zorundadır; kök zaten istemcidedir. Ara sertifika sunulmazsa ortaya sinir bozucu bir durum çıkar: site tarayıcıda çalışır (tarayıcılar daha önce gördükleri araları önbellekler ya da AIA alanından indirir), ama curl, mobil uygulama, Java istemcisi ya da senin HttpClient'ın "unable to get local issuer certificate" der. Teşhis: openssl s_client -connect alan:443 -showcerts çıktısında kaç sertifika döndüğüne bak. "Bende çalışıyor ama sunucudan çağırınca olmuyor" vakalarının klasik sebebidir.

05Yaşam döngüsü: CSR'dan yenilemeye

Sertifika almanın akışı şudur ve ilk adımı kritiktir:

  1. Anahtar çifti üretilir — özel anahtar senin sunucunda üretilir ve hiçbir zaman CA'ya gönderilmez. (CA'nın özel anahtarını da ürettiği hizmetler vardır; kritik sistemlerde kaçınılır — imzayı üretebilen tek taraf sen olmalısın.)
  2. CSR (Certificate Signing Request) hazırlanır: içinde kimlik bilgileri ve açık anahtar vardır, tümü kendi özel anahtarınla imzalanmıştır (anahtara sahip olduğunun kanıtı).
  3. CA doğrular. Doğrulama seviyeleri: DV (yalnız alan adı kontrolü — DNS kaydı ya da HTTP dosyası), OV (kurumun varlığı da doğrulanır), EV (genişletilmiş kurumsal doğrulama). Şifreleme gücü üçünde de aynıdır; fark yalnız kimlik doğrulama titizliğidir.
  4. Sertifika yayınlanır, sunucuya kurulur, zincirle birlikte sunulur.
  5. İzlenir ve yenilenir. Yenileme genellikle otomatiktir: ACME protokolü (Let's Encrypt ve artık kurumsal CA'lar) alan doğrulamasını ve yenilemeyi otomatik yapar.
# Anahtar + CSR üretimi (özel anahtar bu makinede kalır)
openssl req -new -newkey rsa:2048 -nodes -keyout sunucu.key -out sunucu.csr \
  -subj "/C=TR/O=Kurum/CN=portal.kurum.gov.tr" \
  -addext "subjectAltName=DNS:portal.kurum.gov.tr,DNS:www.portal.kurum.gov.tr"

# İçeriği okumak (alanları görmek için)
openssl req  -in sunucu.csr  -noout -text
openssl x509 -in sunucu.crt  -noout -text -dates -subject -issuer

# Sunucunun sunduğu zinciri görmek (eksik ara sertifika teşhisi)
openssl s_client -connect portal.kurum.gov.tr:443 -servername portal.kurum.gov.tr -showcerts

Bir ayrıntı, üretimde sık karşılaşılır: -servername parametresi SNI içindir. Aynı IP üzerinde birden çok alan adı barındığında sunucunun hangi sertifikayı sunacağını SNI belirler; SNI göndermeyen eski istemciler yanlış sertifika alır ve ad uyuşmazlığı hatası verir.

06İptal: CRL, OCSP ve soft-fail problemi

Özel anahtar sızarsa, çalışan biri işten ayrılırsa ya da sertifika yanlış yayınlanmışsa süresi dolmadan iptal edilmesi gerekir. İki mekanizma vardır:

CRLOCSP
YöntemCA, iptal edilen seri numaralarının listesini yayımlarİstemci tek bir sertifikanın durumunu CA'ya sorar
GüncellikPeriyodik — liste yenilenene kadar eski bilgiAnlık
Boyut/maliyetListe büyür, indirmesi pahalıdırKüçük sorgu, ama her bağlantıda ek gecikme
MahremiyetSorun yokCA, kimin hangi siteye girdiğini görür
ErişilemezseEski liste kullanılırGenellikle bağlantıya izin verilir (soft-fail)

OCSP stapling iki sorunu birden çözer: sunucu, kendi sertifikasının OCSP cevabını CA'dan kendisi alır, imzalı ve zaman damgalı hâlde saklar ve el sıkışma sırasında istemciye ekler. İstemci CA'ya hiç gitmez — gecikme yok, mahremiyet sorunu yok.

Kıdem noktası — iptal aslında zayıf bir mekanizmadır

Gerçek şudur: OCSP sunucusuna erişilemediğinde istemcilerin çoğu bağlantıyı keser değil, kabul eder (soft-fail). Sebebi erişilebilirliktir — CA'nın OCSP servisi çökünce internetin yarısının durmasını kimse istemez. Ama sonuç şudur: ortadaki adam konumundaki bir saldırgan OCSP trafiğini engelleyerek iptal kontrolünü etkisiz hâle getirebilir. Bu yüzden sektör yönü değiştirdi: iptale güvenmek yerine sertifika ömürlerini kısaltmak (aylardan günlere) ve otomatik yenilemeyi (ACME) standart hâline getirmek. "Sertifika iptal edildi mi" sorusunun en sağlam cevabı, sertifikanın zaten birkaç gün sonra kendiliğinden geçersiz olmasıdır. Bu tam olarak 13-05'teki JWT tartışmasının aynısıdır: iptal listesi mi, kısa ömür mü? Cevap ikisinde de aynı yöne gitti.

Bir tamamlayıcı mekanizma daha vardır: Sertifika Şeffaflığı (Certificate Transparency). Yayınlanan her genel güven sertifikası, halka açık ve değiştirilemez kayıt defterlerine yazılır. Böylece bir CA senin alan adına izinsiz sertifika yayınlarsa bu görünür olur; kurumlar CT günlüklerini izleyerek kendi alan adlarına yayınlanan sertifikaları takip eder. İzleme, önlemenin mümkün olmadığı yerde tespit koymanın güzel bir örneğidir (2. dersin kontrol matrisi).

07Güven deposu ve onun tehlikeleri

Güven deposu (trust store), sistemin "kökünden güvendiğim CA'lar" listesidir. Kritik ayrıntı: tek bir depo yoktur.

  • İşletim sistemi deposu (Windows sertifika deposu, Linux'ta /etc/ssl/certs).
  • Tarayıcıların kendi depoları (Firefox kendi listesini taşır).
  • Çalışma zamanlarının depoları: Java cacerts, Node'un kendi paketlediği kök listesi, Python certifi.

Bu çokluk pratik bir sonuç doğurur: bir kökü sunucuya eklemek, oradaki her uygulamanın ona güveneceği anlamına gelmez. Kurum içi CA'nızın kökünü sisteme eklediniz ama Java uygulaması hâlâ hata veriyorsa sebep budur — cacerts ayrı bir depodur.

Güven deposunun iki yüzü keskindir:

  • Kurumsal TLS kesme (inspection). Kurumlar, güvenlik cihazının kök sertifikasını tüm istemcilere dağıtır; cihaz TLS'i açıp içeriği inceler ve kendi sertifikasıyla yeniden imzalar. Teknik olarak bu, izin verilmiş bir ortadaki adamdır. Meşru gerekçesi vardır (zararlı yazılım ve veri sızıntısı tespiti), bedeli de vardır: tüm şifreli trafik tek bir cihazda çözülür ve o cihaz ele geçerse her şey açılır; ayrıca ileri gizlilik kurum içinde etkisizleşir.
  • Kötü niyetli kök. Bir saldırgan makineye kök sertifika ekleyebilirse tüm HTTPS trafiğini sessizce çözebilir. Bu yüzden güven deposundaki değişiklikler izlenmesi gereken bir olaydır.

Sertifika sabitleme (pinning), istemcinin yalnızca belirli bir sertifikayı ya da açık anahtarı kabul etmesidir. Mobil bankacılık uygulamalarında kullanılır ve TLS kesmeyi de, sahte CA'yı da engeller. Riski büyüktür: sertifika değiştiğinde uygulamanın kendisi güncellenmeden hizmet kesilir. Bu yüzden yalnız yüksek riskli senaryolarda, yedek anahtar sabitlemesiyle birlikte uygulanır.

08Kurum içi CA ve mTLS

Genel güvenli CA'lar internete açık alan adları içindir. İç ağdaki servisler, yönetim arayüzleri ve servisler arası iletişim için kurumlar kendi CA'sını kurar (Windows'ta Active Directory Certificate Services, Linux'ta step-ca/Vault gibi araçlar).

İç CA kurulurken bilinmesi gerekenler:

  • Kök özel anahtar HSM'de ya da çevrimdışı tutulur; günlük imzalama ara CA ile yapılır.
  • Kök sertifika tüm istemci güven depolarına dağıtılır (grup ilkesi, yapılandırma yönetimi, konteyner imajı).
  • Ad kısıtlamaları (name constraints) tanımlanır: iç CA yalnız .kurum.local için sertifika üretebilsin. Bu, iç CA'nın anahtarı sızarsa dış dünyaya sertifika üretilmesini sınırlar.
  • Kendinden imzalı (self-signed) sertifika ile iç CA aynı şey değildir: kendinden imzalı sertifika hiçbir zincire bağlanmaz, her istemciye tek tek tanıtılır ve iptal edilemez — tek makinelik geliştirme dışında kullanılmaz.

mTLS (karşılıklı TLS), sertifikanın istemci tarafında da kullanılmasıdır: yalnız sunucu değil, istemci de kendi sertifikasını sunar ve sunucu doğrular. Böylece kimlik doğrulama parolasız ve jetonsuz yapılır. Kullanım alanları: servisler arası iletişim (19. hattaki servis ağı), kurumsal VPN, yüksek güvenlikli API'ler ve bazı kamu entegrasyonları. Getirdiği yük gerçektir: her istemci için sertifika üretimi, dağıtımı, yenilenmesi ve iptali — yani tam bir PKI operasyonu. Bu yüzden mTLS kararı, "daha güvenli" olduğu için değil, otomatik sertifika yönetimi kurulabildiği için verilir.

09Kamu bağlamı: e-imza, mobil imza, zaman damgası

Türkiye'de elektronik imza mevzuatı, güvenli elektronik imzayı ıslak imzayla aynı hukuki sonucu doğuran bir araç olarak tanımlar (belirli işlemler hariç). Bunun altındaki altyapı bu dersin konusudur:

  • Nitelikli elektronik sertifika (NES) — kimliği yüz yüze doğrulanmış gerçek kişiye, yetkilendirilmiş bir Elektronik Sertifika Hizmet Sağlayıcısı tarafından verilen sertifika. Kurumsal tarafta yaygın sağlayıcı Kamu SM'dir.
  • Akıllı kart / USB token — özel anahtar karttan çıkmaz; imzalama işlemi kartın içinde yapılır. Bu, "özel anahtar kopyalanamaz" garantisinin fiziksel karşılığıdır ve inkâr edilemezliğin dayanağıdır.
  • Mobil imza — aynı işlevin SIM kart üzerinden yürütülmesi; imza operatörün güvenli SIM'inde üretilir, kullanıcı telefonda PIN ile onaylar.
  • Zaman damgası — bir verinin belirli bir andan önce var olduğunu kanıtlayan, zaman damgası otoritesince imzalanmış kayıt.

Zaman damgasının neden gerekli olduğu, PKI'nın en zarif ayrıntılarından biridir: imza sertifikası bir gün süresi dolar ya da iptal edilir. Zaman damgası yoksa, geçmişte atılmış geçerli bir imza ile sertifika iptal edildikten sonra atılmış bir imza ayırt edilemez ve eski imzaların tamamı şüpheli hâle gelir. Zaman damgası, imzanın o anda geçerli bir sertifikayla atıldığını sabitler — bu yüzden uzun süreli arşivlenecek belgelerde (sözleşme, tapu, resmî yazışma) zorunludur. Aynı ihtiyacın yazılım tarafındaki karşılığı kod imzalamadır: imzalı bir kurulum paketi, sertifikası bugün süresi dolmuş olsa bile zaman damgası sayesinde geçerli kabul edilir.

10Sık görülen hatalar ve teşhisleri

BelirtiGerçek sebepDoğru çözüm
Tarayıcıda çalışıyor, curl/servisten çağrıda hataSunucu ara sertifikayı sunmuyorZinciri tam sun (fullchain), s_client -showcerts ile doğrula
"certificate has expired"Yenileme izlenmiyorOtomatik yenileme (ACME) + süre izleme uyarısı; yenilemeden sonra servisin dosyayı yeniden okuması
"hostname mismatch"SAN'da o ad yok; yalnız CN'e güvenilmişTüm adları SAN'a ekle; joker sertifika yalnız tek seviye alt alan kapsar
Java uygulaması güvenmiyor, sistem güveniyorAyrı güven deposu (cacerts)Kökü ilgili çalışma zamanının deposuna ekle
Konteynerde TLS hatası, ana makinede yokİmajda kök sertifika paketi eksikca-certificates paketini imaja ekle
Geliştirici "doğrulamayı kapattım" diyorSertifika hatası kök sebep bulunmadan bastırılmışAsla doğrulamayı kapatma; doğru kökü tanıt — kapatılan doğrulama ortadaki adama kapı açar

Son satır özellikle önemlidir. ServerCertificateCustomValidationCallback ile her sertifikaya true dönmek, NODE_TLS_REJECT_UNAUTHORIZED=0 ya da curl -k — bunların hepsi TLS'i şifreli ama kimliksiz hâle getirir, yani bu dersin çözdüğü problemi geri getirir. Geliştirmede geçici olarak yapılan bu ayar üretime sızdığında sessizdir: hiçbir hata vermez, yalnızca korumasızdır.

11Mini alıştırma — zinciri kur ve boz

Yaklaşık 20 dakika · openssl kurulu bir terminal

  1. Gerçek bir zinciri incele. Herhangi bir kamu sitesine openssl s_client -connect alan:443 -servername alan -showcerts ile bağlan. Kaç sertifika döndü? Her birinin subject ve issuer alanlarını yaz ve zinciri kâğıda çiz. Kök geldi mi, gelmediyse neden?
  2. Alanları oku. Yaprak sertifikayı dosyaya kaydedip openssl x509 -noout -text ile aç. SAN listesini, geçerlilik tarihlerini, EKU alanını ve Basic Constraints değerini bul. CA:FALSE olduğunu doğrula ve bunun neden önemli olduğunu yaz.
  3. Kendi CA'nı kur. Bir kök anahtar/sertifika üret, sonra bir sunucu anahtarı + CSR üret ve kökünle imzala. Yerel bir HTTPS sunucusunu bu sertifikayla ayağa kaldır.
  4. Güven deposunu gör. Sunucuya curl ile bağlan — hata almalısın. Sonra curl --cacert kok.crt ile bağlan, çalıştığını gör. Aradaki farkın "şifreleme" değil güven olduğunu bir cümleyle yaz.
  5. Zinciri boz. Sunucudan ara sertifikayı çıkar (ara CA'lı bir kurulum yaptıysan) ya da yanlış bir ad için sertifika üretip hostname mismatch hatasını üret. Hata mesajını kaydet — üretimde bu mesajı gördüğünde ne aramanı söylüyor?
  6. Süre ve iptal. Sertifikanı 1 gün geçerli üret ve bitiş tarihini -dates ile gör. Ardından şu soruyu yaz: sertifikam bugün sızarsa iptal etsem istemciler bunu nasıl öğrenir, öğrenemezse ne olur?
  7. Tehlikeli kısayolu dene ve kapat. İstemcide doğrulamayı kapatıp (curl -k) bağlantının çalıştığını gör. Sonra kendine tek cümlelik bir not yaz: bu ayar üretime sızarsa hangi saldırı mümkün olur ve neden hiçbir hata mesajı görmezsin?

12Kendini sına

PKI hangi problemi çözer? Sertifika zinciri nasıl doğrulanır ve neden ara CA vardır?

PKI, bir açık anahtarın gerçekten iddia edilen kimliğe ait olduğunu kanıtlama problemini çözer; bu olmadan asimetrik kripto ortadaki adam saldırısına açıktır — saldırgan kendi açık anahtarını sunar, matematik kusursuz çalışır ama karşındaki kişi yanlıştır. Çözüm hiyerarşik güvendir: önceden güvenilen bir CA, "bu açık anahtar bu kimliğe aittir" diyen bir sertifika imzalar. Zincir doğrulama: (1) yaprak sertifikanın imzası, issuer olan ara CA'nın açık anahtarıyla doğrulanır; (2) aynı işlem yukarı doğru tekrarlanır ve güven deposundaki bir köke ulaşılması gerekir; (3) tüm halkaların geçerlilik tarihleri kontrol edilir; (4) ara halkalarda Basic Constraints: CA=true ve uygun Key Usage aranır; (5) yaprakta SAN ile ana bilgisayar adı eşleştirilir; (6) iptal durumu sorgulanır. Ara CA vardır çünkü kök CA'nın özel anahtarı çevrimdışı/HSM'de saklanır: kök sızarsa milyonlarca sertifika bir anda güvenilmez olur ve kök değişimi yıllar sürer (kökler işletim sistemi/tarayıcı güncellemeleriyle dağıtılır). Ara CA günlük imzalamayı yapar, sızarsa yalnız o iptal edilir — etki alanını sınırlama ilkesi.

CRL ile OCSP arasındaki fark nedir? OCSP stapling ne kazandırır? İptal mekanizması neden zayıf kabul edilir?

CRL, CA'nın yayımladığı iptal edilmiş seri numarası listesidir: periyodik olduğu için güncelliği geriden gelir ve liste büyüdükçe indirmesi pahalılaşır. OCSP, tek bir sertifikanın durumunun CA'ya anlık sorulmasıdır: küçük ve günceldir, ama her bağlantıya gecikme ekler ve CA kimin hangi siteye girdiğini görür (mahremiyet sorunu). OCSP stapling: sunucu kendi sertifikasının imzalı ve zaman damgalı OCSP cevabını CA'dan kendisi alıp el sıkışmaya ekler — istemci CA'ya hiç gitmez, gecikme ve mahremiyet sorunu ortadan kalkar. Zayıflığın sebebi soft-fail'dir: OCSP sunucusuna erişilemediğinde istemcilerin çoğu bağlantıyı kesmez, kabul eder (aksi hâlde CA çökünce internet durur). Dolayısıyla ortadaki adam konumundaki saldırgan OCSP trafiğini engelleyerek iptal kontrolünü etkisizleştirebilir. Sektörün cevabı iptali güçlendirmek değil, sertifika ömürlerini kısaltmak ve yenilemeyi otomatikleştirmek (ACME) oldu — 13-05'teki JWT "iptal listesi mi kısa ömür mü" tartışmasıyla aynı sonuç. Tamamlayıcı olarak Sertifika Şeffaflığı, yayınlanan her sertifikayı halka açık kayıt defterlerine yazarak yanlış/izinsiz yayınları tespit edilebilir kılar.

Güven deposu nedir, kaç tanedir? Kurumsal TLS kesme nasıl çalışır ve bedeli nedir? Sertifika sabitlemenin riski nedir?

Güven deposu, sistemin kökünden güvendiği CA listesidir ve tek değildir: işletim sistemi deposu, tarayıcıların kendi depoları (Firefox), çalışma zamanı depoları (Java cacerts, Node'un paketlediği liste, Python certifi) ayrı ayrıdır. Bu yüzden bir kökü sisteme eklemek, o makinedeki her uygulamanın ona güveneceği anlamına gelmez — "sistem güveniyor, Java güvenmiyor" vakası budur; konteynerde ise ca-certificates paketinin eksikliği aynı hataya yol açar. Kurumsal TLS kesme: güvenlik cihazının kök sertifikası tüm istemcilere dağıtılır, cihaz TLS'i açıp içeriği inceler ve kendi sertifikasıyla yeniden imzalar — teknik olarak izin verilmiş bir ortadaki adamdır. Meşru gerekçesi vardır (zararlı yazılım/veri sızıntısı tespiti), bedeli tüm şifreli trafiğin tek noktada çözülmesi, o cihazın kritik bir hedefe dönüşmesi ve kurum içinde ileri gizliliğin etkisizleşmesidir. Aynı mekanizma kötü niyetle de çalışır: makineye kök sertifika ekleyebilen saldırgan tüm HTTPS'i sessizce çözer — bu yüzden güven deposu değişiklikleri izlenmesi gereken bir olaydır. Sabitleme (pinning), yalnız belirli bir sertifika/açık anahtarı kabul etmektir; TLS kesmeyi ve sahte CA'yı engeller ama sertifika değiştiğinde uygulama güncellenmeden hizmet kesilir — bu yüzden yalnız yüksek riskli senaryolarda, yedek anahtar sabitlemesiyle uygulanır.

Zaman damgası neden gereklidir? Nitelikli elektronik sertifika ve akıllı kart neyi garanti eder? "TLS doğrulamasını kapattım" ne anlama gelir?

Zaman damgası, verinin belirli bir andan önce var olduğunu otoritenin imzasıyla sabitler. Gerekliliğinin sebebi: imza sertifikaları bir gün süresi dolar ya da iptal edilir; zaman damgası yoksa geçmişte geçerliyken atılmış bir imza ile iptalden sonra atılmış bir imza ayırt edilemez ve tüm eski imzalar şüpheli hâle gelir. Bu yüzden uzun süre arşivlenecek belgelerde zorunludur; kod imzalamada da imzalı paket, sertifikası bugün süresi dolsa bile zaman damgasıyla geçerli kalır. Nitelikli elektronik sertifika, kimliği yüz yüze doğrulanmış gerçek kişiye yetkili bir sertifika hizmet sağlayıcısınca verilir ve mevzuatta güvenli elektronik imzayı ıslak imzayla aynı hukuki sonuca bağlar. Akıllı kart/USB token ve mobil imza özel anahtarın ortamdan çıkmamasını sağlar — imzalama işlemi kartın/SIM'in içinde yapılır; kopyalanamayan anahtar, inkâr edilemezliğin fiziksel dayanağıdır. "Doğrulamayı kapattım" (curl -k, NODE_TLS_REJECT_UNAUTHORIZED=0, her sertifikaya true dönen geri çağırım) demek, TLS'i şifreli ama kimliksiz hâle getirmek, yani bu dersin çözdüğü problemi geri getirmektir: araya giren biri kendi sertifikasını sunar, bağlantı sorunsuz görünür ve hiçbir hata mesajı çıkmaz. Doğru çözüm doğru kökü tanıtmak ya da eksik ara sertifikayı sunmaktır.

13Sınav köşesi

Yazılıda nasıl sorulur

(1) PKI nedir, bileşenleri nelerdir? (2) Sertifika otoritesi (CA) ve kayıt otoritesi (RA) ne iş yapar? (3) Dijital sertifika hangi bilgileri içerir? (4) X.509 nedir? (5) Sertifika zinciri nasıl doğrulanır? (6) Kök CA'nın özel anahtarı neden çevrimdışı tutulur? (7) CSR nedir, içinde ne bulunur? (8) DV, OV ve EV sertifika arasındaki fark nedir? (9) CRL ve OCSP nedir, farkları nelerdir? (10) OCSP stapling nedir? (11) Self-signed sertifika ne zaman kullanılır? (12) Güven deposu (trust store) nedir? (13) Elektronik imza ile dijital imza arasındaki ilişki nedir? (14) Zaman damgası ne işe yarar? (15) mTLS nedir?

Sözlüde nasıl anlatılır — 2 dakikalık taslak

Düzen: (1) Problem — "Asimetrik kripto tek başına yetmez: elimdeki açık anahtarın karşı tarafa ait olduğunu bilmem gerekir, yoksa araya giren kendi anahtarını sunar. PKI bu bağı kurar." (2) Sertifika ve zincir — "Sertifika, kimlik + açık anahtar + geçerliliğin bir CA tarafından imzalanmış hâlidir. Doğrulamada zinciri yukarı çıkarım: yaprak, ara CA, kök; kök benim güven depomda olmalı. Ad kontrolünü CN'den değil SAN'dan yaparım." (3) Operasyon — "Anahtarı ben üretirim, CA'ya yalnız CSR giderim; özel anahtar sunucudan çıkmaz. Yenilemeyi ACME ile otomatikleştiririm, çünkü sertifika hatalarının çoğu süre dolmasıdır." (4) İptal — "CRL liste, OCSP anlık sorgudur; stapling ile sunucu cevabı kendisi getirir. Ama iptalin zayıf olduğunu bilirim: OCSP'ye erişilemediğinde çoğu istemci soft-fail yapar; bu yüzden sektör kısa ömürlü sertifikaya döndü — JWT'de vardığımız sonucun aynısı." (5) Kıdem vuruşu — "İki şeyi vurgularım. Üretimde en sık gördüğüm hata eksik ara sertifikadır: tarayıcıda çalışır, servisten çağırınca patlar; teşhisi openssl s_client -showcerts. İkincisi, doğrulamayı kapatmak bir çözüm değildir — TLS'i şifreli ama kimliksiz bırakır ve hiçbir hata vermez; doğrusu doğru kökü tanıtmaktır. Kamu tarafında da imzanın tek başına yetmediğini bilirim: sertifika bir gün geçersiz olacağı için uzun ömürlü belgelerde zaman damgası şarttır."