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:
| Alan | Ne tutar | Pratikte dikkat |
|---|---|---|
| Subject | Sertifikanı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'ler | Ası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 Key | Sahibin açık anahtarı + algoritma | RSA 2048+ ya da EC P-256 |
| Validity | Başlangıç ve bitiş tarihi | Genel güven sertifikalarında süre kısaldı; izlenmezse kesinti sebebi |
| Serial Number | CA içinde benzersiz numara | İptal listelerinde bu numarayla anılır |
| Signature | CA'nın imzası ve algoritması | SHA-1 imzalı sertifika bugün geçersiz sayılır |
| Key Usage / Extended Key Usage | Anahtarın hangi amaçla kullanılabileceği | Sunucu kimliği, istemci kimliği, kod imzalama, e-posta… amaç dışı kullanım reddedilir |
| Basic Constraints | CA: true/false, yol uzunluğu | Yaprak sertifikanın başka sertifika imzalamasını engelleyen alan |
| AIA / CDP | Ara sertifika ve iptal listesi adresleri | Zincir 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):
- Sunucunun sunduğu yaprak sertifikanın imzası, issuer olarak gösterilen ara CA'nın açık anahtarıyla doğrulanır.
- 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.
- Her sertifikanın geçerlilik tarihi kontrol edilir.
- Her ara halkanın
Basic Constraintsalanında CA: true olduğu veKey Usage'ın sertifika imzalamaya izin verdiği doğrulanır. - Yaprak sertifikanın SAN alanı bağlanılan ana bilgisayar adıyla eşleşir mi diye bakılır.
- İ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:
- 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.)
- 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ı).
- 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.
- Sertifika yayınlanır, sunucuya kurulur, zincirle birlikte sunulur.
- İ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:
| CRL | OCSP | |
|---|---|---|
| Yöntem | CA, iptal edilen seri numaralarının listesini yayımlar | İstemci tek bir sertifikanın durumunu CA'ya sorar |
| Güncellik | Periyodik — liste yenilenene kadar eski bilgi | Anlık |
| Boyut/maliyet | Liste büyür, indirmesi pahalıdır | Küçük sorgu, ama her bağlantıda ek gecikme |
| Mahremiyet | Sorun yok | CA, kimin hangi siteye girdiğini görür |
| Erişilemezse | Eski liste kullanılır | Genellikle 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, Pythoncertifi.
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.localiç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
| Belirti | Gerçek sebep | Doğru çözüm |
|---|---|---|
Tarayıcıda çalışıyor, curl/servisten çağrıda hata | Sunucu ara sertifikayı sunmuyor | Zinciri tam sun (fullchain), s_client -showcerts ile doğrula |
| "certificate has expired" | Yenileme izlenmiyor | Otomatik 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üveniyor | Ayrı 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 eksik | ca-certificates paketini imaja ekle |
| Geliştirici "doğrulamayı kapattım" diyor | Sertifika 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
- Gerçek bir zinciri incele. Herhangi bir kamu sitesine
openssl s_client -connect alan:443 -servername alan -showcertsile bağlan. Kaç sertifika döndü? Her birininsubjectveissueralanlarını yaz ve zinciri kâğıda çiz. Kök geldi mi, gelmediyse neden? - Alanları oku. Yaprak sertifikayı dosyaya kaydedip
openssl x509 -noout -textile aç. SAN listesini, geçerlilik tarihlerini, EKU alanını veBasic Constraintsdeğerini bul.CA:FALSEolduğunu doğrula ve bunun neden önemli olduğunu yaz. - 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.
- Güven deposunu gör. Sunucuya
curlile bağlan — hata almalısın. Sonracurl --cacert kok.crtile bağlan, çalıştığını gör. Aradaki farkın "şifreleme" değil güven olduğunu bir cümleyle yaz. - Zinciri boz. Sunucudan ara sertifikayı çıkar (ara CA'lı bir kurulum
yaptıysan) ya da yanlış bir ad için sertifika üretip
hostname mismatchhatasını üret. Hata mesajını kaydet — üretimde bu mesajı gördüğünde ne aramanı söylüyor? - Süre ve iptal. Sertifikanı 1 gün geçerli üret ve bitiş tarihini
-datesile gör. Ardından şu soruyu yaz: sertifikam bugün sızarsa iptal etsem istemciler bunu nasıl öğrenir, öğrenemezse ne olur? - 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."
