Let’s Encrypt güven zincirini kısaltıyor
(letsencrypt.org)- Let’s Encrypt, 30 Eylül 2024'te süresi dolacak çapraz imzayı (cross-sign) uzatmayarak, ISRG Root X1 ile sona eren daha kısa bir sertifika zincirine geçiyor
- İlk çıkış döneminde kendi kök sertifikası yeterince güvenilmiyordu ve bu yüzden IdenTrust’un DST Root CA X3 köküne bağımlıydı; ancak artık ISRG Root X1’in güven kapsamı büyük ölçüde genişledi
- 2021'de eski Android uyumluluğu için eklenen kök çapraz imzası geçici bir önlemdi ve bu sayede eski Android cihazlar Let’s Encrypt sertifikalarına 3 yıl daha güvenebildi
- Son 3 yılda ISRG Root X1'e güvenen Android cihazların oranı %66'dan %93,9'a yükseldi ve çapraz imza kaldırıldığında TLS el sıkışmasındaki sertifika baytları da %40'tan fazla azalıyor
- Android 7.0 ve altı kullanıcılarına Firefox Mobile öneriliyor; site yöneticileri ile ACME istemcisi geliştiricilerinin de 2024 geçiş takvimine göre zincir işleme süreçlerini kontrol etmesi gerekiyor
Çapraz imzanın sona ermesinin arka planı
- Let’s Encrypt, ilk çıkış döneminde sertifikalarının yaygın olarak güvenilmesi için ara sertifikasını IdenTrust’un DST Root CA X3 köküyle çapraz imzaladı
- Bu yöntem, kendi kökü olan ISRG Root X1 henüz yaygın şekilde güvenilmese bile, söz konusu ara sertifikanın verdiği sertifikalara güvenilmesini sağlıyordu
- Zamanla ISRG Root X1 kendi başına yaygın güven kazanmış oldu
- 2021 sonuna gelindiğinde, çapraz imzalı ara sertifikanın ve DST Root CA X3’ün kendisinin süresi dolacaktı
- O dönemde güncel tarayıcılar Let’s Encrypt köküne güveniyordu, ancak Android cihazların üçte birinden fazlası hâlâ eski OS sürümlerini kullanıyordu
- Bu cihazlar, Let’s Encrypt sertifikalarını kullanan web sitelerine bir anda güvenemez hale gelebilirdi
- Let’s Encrypt, 2021’de ara sertifikaya değil, doğrudan köke çapraz imza uygulayarak DST Root CA X3’ten daha uzun süre geçerli olacak geçici bir çözüm hazırladı
- Bu sayede eski Android cihazlar Let’s Encrypt sertifikalarına 3 yıl daha güvenebildi
- Söz konusu çapraz imzanın süresi 30 Eylül 2024 tarihinde doluyor
Neden daha kısa zincire geçiliyor?
- Let’s Encrypt, artık uyumluluğu uzatmak için yeni bir çapraz imza almıyor
- Son 3 yılda ISRG Root X1’e güvenen Android cihazların oranı %66'dan %93,9'a çıktı
- Android 14, tam OS güncellemesi olmadan güven deposunu güncelleyebildiği için bu oran daha da artabilir
- Çapraz imzanın kaldırılması, TLS el sıkışmasında taşınan sertifika baytı miktarını %40'tan fazla azaltıyor
- İşletme maliyetleri de önemli ölçüde düşüyor; böylece Let’s Encrypt fonlarını gizlilik ve güvenlik iyileştirmelerine daha fazla odaklayabiliyor
2024 geçiş takvimi
- 8 Şubat 2024 Perşembe:
/acme/certificateAPI uç noktasına yapılan isteklerde varsayılan çapraz imza sunulması durduruldu- Abonelerin çoğu için bu, ACME istemcisinin ISRG Root X1 ile sona eren zinciri yapılandırması ve web sunucusunun TLS el sıkışmasında daha kısa zinciri sunması anlamına geliyordu
- Yakında süresi dolacak çapraz imza ile sona eren daha uzun zincir ise alternatif zincir olarak istenebiliyordu
- 6 Haziran 2024 Perşembe: daha uzun çapraz imzalı zincirin sunulması tamamen durduruldu
- Bu tarih, çapraz imzanın sona ermesinden 90 günden biraz daha erken ve yaklaşık bir sertifika ömrü kadar öncesine denk geliyor
- Amaç, abonelere çapraz imzalı zincirden çıkmaları için en az bir tam yenileme/düzenleme döngüsü sağlamaktı
- 30 Eylül 2024 Pazartesi: çapraz imzalı sertifikanın süresi doluyor
- Kullanıcıların çoğu için bunun ayrı bir olay olmaması gerekiyor; istemci tarafı arızaların önceki 6 ay içinde zaten ortaya çıkmış olması bekleniyor
Kullanıcılar ve yöneticiler neyi kontrol etmeli?
- Android 7.0 ve altı kullanıcılarının, Let’s Encrypt sertifikalarıyla korunan web sitelerine erişmeye devam etmek için ek adım atması gerekebilir
- Let’s Encrypt, Android OS güven deposu yerine kendi güven deposunu kullanan Firefox Mobile uygulamasının kurulmasını ve kullanılmasını öneriyor
- Site yöneticileri, 2024’ün 2. ve 3. çeyreğinde web sitesi kullanım istatistiklerini ve etkin user-agent dizelerini kontrol etmeli
- Android ziyaretlerinde ani düşüş varsa, Android 7.0 ve altı kullanıcıların kayda değer bir paya sahip olması muhtemeldir
- Bu kullanıcılara Firefox Mobile kullanmaları yönünde bilgilendirme yapılması öneriliyor
- ACME istemcisi geliştiricileri, her sertifika düzenleme ve yenileme sırasında API’nin sunduğu sertifika zincirini doğru şekilde indirip kurmalı
- Geçmişte görülen hata türlerinden biri, zincirin hiç indirilmemesi ve yalnızca end-entity sertifikasının sunulmasıydı
- Bir diğer durum, zincir indirilmeden hard-code edilmiş bir zincirin sunulmasıydı
- Bir başka durumda ise zincir yalnızca ilk düzenlemede indiriliyor, yenileme sırasında yeniden indirilmiyordu
- Geçişle ilgili sorular Let’s Encrypt community forum üzerinden sorulabilir
1 yorum
Hacker News görüşleri
Let's Encrypt'in 2019 yazında bu geçişi yapacağını duyurup ardından topluluk geri bildirimini dinleyerek ertelediğini hatırlıyorum
O dönemde yeniden değerlendirilmesini güçlü biçimde talep edenlerden biriydim ama bu konuda beklentilerin çok ötesine geçip tam 4,5 yıl gecikeceğini düşünmemiştim. TLS ekosistemini bu kadar dikkatli ele aldıkları için minnettarım
Android cihazların %95'ini kapsamak için Ağustos 2016'daki Android 7.0 Nougat sürümüne kadar destek vermek gerekiyor
https://en.wikipedia.org/wiki/Android_Nougat
iOS cihazlarda %95 kapsama için Eylül 2020'de çıkan iOS 14 yeterli oluyor; hatta yalnızca %90'a bakarsak Android'de 8.1 (2017), iOS'ta ise 15 (2021) gerekiyor
https://iosref.com/ios-usage
https://en.wikipedia.org/wiki/IOS_14
Apple, insanları daha yeni işletim sistemlerine geçmeye ikna etme ya da buna imkân tanıma konusunda daha başarılı görünüyor
Cihazların güncellenmemesinin nedeni, üreticinin güncelleme sunmayı bırakması
curl'ün CA paketi sayfasına göre Mozilla paketi sıkıştırılmamış halde yaklaşık 200KB ve benim Android telefonumda Chrome uygulaması 25MB, dolayısıyla uygulama boyutunda %1 artışla bunu güncel tutmak makul görünüyor
Elbette başka uygulamalar da güncel CA'lar isteyebilir ama gerçekten tüm CA'ların gerekip gerekmediği ya da yalnızca fiilen kullanılma ihtimali olanların yeterli olup olmadığı da tartışılabilir
Google'ın, düşük maliyetli bir üretici müşterilere güncelleme vermemeye karar verirse yapabileceği fazla bir şey yok. Android sertifikası almak veya korumak için belli bir süre güncelleme sunmalarını şart koşabilir ama bir noktada o üretici Android'i tamamen bırakabilir
Üstelik Qualcomm da zaman geçtikçe eski yonga setleri için güncellenmiş kernel ve blob'lar sağlamıyor. Google, eskiden gülünç derecede kısa olan 18 aylık süreyi uzatmaları için pazarlık yaptı ama Qualcomm'un daha fazlasını yapma zorunluluğu yok. Google kendi yonga setlerini üretmeye başlayınca bu soruna olan ilgisi de biraz azaldı
Bunun iyi olduğunu söylemiyorum ama Android'in modeli gereği genelde sonuç böyle oluyor ve Apple'ın modeli bu alanlarda daha fazla kontrol sağlıyor
Eski çapraz imzanın çalışmaya devam etmesini sağlama yöntemi oldukça ilginçti
Yeni çapraz imza, DST Root CA X3'ün süresi dolduktan sonrasına kadar uzandığı için biraz sıra dışıydı. Bu, Android'in güven çıpası olarak kullanılan sertifikaların son kullanma tarihini bilerek zorunlu kılmaması sayesinde mümkün olan bir çözümdü
Aslında güven çıpası, diğer sertifikalardan oldukça farklı çalıştığı için şaşırtıcı gelebilir
[1] https://letsencrypt.org/2020/12/21/extending-android-compati...
[2] https://alexsci.com/blog/name-non-constraint/
Hatırladığım kadarıyla büyük sorunlardan biri, eski OpenSSL sürümlerinin kök güven çıpasının süresinin dolup dolmadığını kontrol etmesiydi. Üstelik mesele bundan da ibaret değildi; o sırada çalıştığım şirkette Ubuntu'nun bu durumu ele alabilmek için bir şeyler yamaması gerekmişti ve yama ancak son kullanma tarihinden birkaç gün önce çıktı, bu yüzden bazı sistemler kısa süreli aksaklık yaşadı. Sorunu gidermek için çok sayıda Docker imajını yeniden derlemek zorunda kaldık
Bu geçici çözüm o kadar radikal ve emsalsizdi ki, muhtemelen süresi dolmamış ve geniş uyumluluğa sahip bir kökten çapraz imza almanın maliyetine kıyasla fark çok büyük olduğu için tercih edildi. Muazzam miktarda test de gerekmiş olmalı. Kusursuz değildi ama genel olarak oldukça sorunsuz atlatılması etkileyiciydi
1 time_check = now()
2 for cert in Cn to C0
3 if time_check < cert.valid_from || time_check > cert.valid_to
4 return EXPIRED
5 time_check = cert.issue_time
6 return NOT_EXPIRED
Ama araştırınca gerçekte 5. satırın olmadığı bir biçimde çalıştığını gördüm; yani tüm zaman kontrolleri mevcut zamana göre yapılıyor. Zincirdeki tüm sertifikaların şu anda geçerli olması gerekiyor
Kod imzalama sertifikaları ise TLS'in de böyle çalıştığını düşündüğüm şekilde çalışıyor. Zaman damgalı bir kodun kök sertifikasının süresi dolmuş olsa bile, zaman damgası anında kök geçerliyse kod hâlâ geçerli sayılıyor
Çapraz imzalı sertifikanın süresinin dolmasının çoğu kişi için bir sorun yaratmamasını umuyorum, ancak önceki DST çapraz imza süresi dolumu öyle olmamıştı
Hatırladığım kadarıyla GnuTLS, süre dolumundan sonra yol oluşturmayı düzgün yapamamıştı. Yalnızca süresi dolmuş sertifikaya giden yolu kuruyor, sonra da süresi dolduğunu görüp diğer olası yolları yok sayarak duruyormuş gibi görünüyordu
Daha da kötüsü, GnuTLS apt'nin HTTPS kullanırken yararlandığı TLS kütüphanesiydi. HTTPS varsayılan değildi ama güvenlik ekibimiz tüm paketleri vendor olarak getirip güvenli şekilde sunmak istiyordu; bu başlı başına makul olsa da bedeli kesinti oldu. Sanırım Bullseye'da düzeltilmişti ve tamamen şans eseri, süre dolumundan yalnızca yaklaşık bir hafta önceydi. Azure da bu süre dolumuyla bağlantılı olarak çeşitli kesintiler yaşadı
Şifrelenmemiş HTTP kullanmak dışında, TLS'nin artık web'in en kırılgan bileşeni olmamasını sağlayacak önerilmiş bir çözüm var mı?
Protokolün kaldırılması, sertifika sürelerinin dolması, değiştirmeler gibi bitmeyen değişiklikler planlı eskitmeyi gereğinden fazla büyütmüş gibi görünüyor
Planlı eskitmeye yol açan kötü taraf, cihazların üretici güncellemelerini çok hızlı biçimde alamaz hale gelmesi ve üçüncü tarafların da güncelleme yapamaması
Benim tercih ettiğim çözüm, üreticilerin satış sonundan itibaren 10 yıl dolmadan güvenlik güncellemesi üretmeyi durdurmasının yasak olması ya da durdurmak istiyorlarsa her şeyi açık kaynak yapmaları veya tüm alıcıların tam geri ödeme alabilmesi yönünde bir yasa olurdu
Bunun gerekli olmasının sebebi, dünya çapında dağıtık iptalin son derece zor bir problem olması. Kullanıcı ile sertifikanın kısmen birbirine bağlanmış olmasının fiilen iptal edilemez hale gelmesini hafifletmek için sertifika ömürlerini kısaltıp etki alanını küçültüyoruz
Elbette bu çok teselli etmiyor ama ACME sonrası kısa ömürlü sertifika dünyası, uzun süreli Verisign sertifikalarının kâbus gibi dünyasına kıyasla geliştirici deneyimi açısından daha iyi. TLS'ye alternatiflerin de benzer sorunlarla karşılaşacağını akılda tutmakta fayda var
x509 sertifika biçimi aslında uzun zamandır neredeyse hiç değişmedi
Protokol değişiklikleri artık istikrar kazanıyor gibi görünüyor. TLS 1.2 2008'de tanıtıldı ve hâlâ yeterli kabul ediliyor, dolayısıyla artık yeni sayılmaz. Birçok kişi onu dikkatle incelediği için sorunların çoğunun ortaya çıkmış olmasını umuyoruz
Bence Let's Encrypt'in yaptığı şey özünde DANE olarak görülebilir; öyleyse neden doğrudan desteklenmesin ki? Elbette DANE'in uygun olmadığı kullanım senaryoları olabilir
Mükemmelin yeterince iyinin önüne geçmesi için bir sebep görmüyorum; isteyen DANE kullansın
“İşletme maliyetlerini büyük ölçüde azaltıp gizlilik ve güvenlik iyileştirmelerine kaynak ayırabiliriz” sözü, çapraz imza için milyonlarca dolar gibi tutarlar ödendiği anlamına mı geliyor?
Aynı yıl toplam gider 5,1 milyon dolardı; yani bu harcama bütçenin neredeyse %10'una denk geliyor
[0]: https://beta.candid.org/profile/9328188?keyword=46-3344200&a...
Sertifika şirketinin nasıl çapraz imza vermeye ikna edildiğine dair perde arkası hikâyeyi bilen var mı? Let’s Encrypt onların iş modelini tamamen öldürmüyor mu?
RapidSSL veya GoDaddy gibi şirketler, “tüm CA işimizi satın alın” seviyesinde para teklif edilmedikçe Let’s Encrypt'e çapraz imza vermezdi
Ama DV sertifika satışı IdenTrust'ın iş modeli değildi; bu yüzden başkalarının tahmin ettiği gibi 6 haneli rakamın altında bir bedelle çapraz imza sağlamaya istekli olmuş olabilir. TLS root sertifikalarının çalışma biçimi nedeniyle IdenTrust'ın çapraz imzası da, aşırı kârlı bir CA'nın çapraz imzası kadar LE için faydalıydı
IdenTrust da batmış gibi görünmüyor
1 IdenTrust 48.5% 53.6%
2 DigiCert Group 13.1% 14.5%
3 Sectigo (Comodo Cybersecurity) 12.1% 13.4%
4 GlobalSign 6.1% 6.7%
5 Let's Encrypt 5.8% 6.4%
6 GoDaddy Group 4.8% 5.3%
https://en.wikipedia.org/wiki/Certificate_authority
2021 sonlarında çapraz imzalı ara sertifikanın ve DST Root CA X3’ün kendisi süresi dolduğunda, modern tarayıcıların hepsi LE köküne güveniyordu; ancak Android cihazların üçte birinden fazlası hâlâ eski işletim sistemleri çalıştırdığı için LE sertifikası kullanan web sitelerine bir anda güvenememe riski ortaya çıkmış
Bunu ancak birkaç hafta önce öğrendim ama ubiquiti kullanıcıları da etkilenmiş gibi görünüyor
Kısa süre önce backend’i AWS’den yerel sunucuya taşırken, her zamanki Letsencrypt yerine ZeroSSL kullanmak zorunda kaldım
Çünkü desteklediğim 2016 üretimi IoT cihazlarında LE sertifikasını doğrulamak için gereken kök sertifika yoktu. Muhtemelen bu, LE’nin kullandığı R3 kök sertifikasının 2021’de sona ermesiyle ilgiliydi
Tek bir sertifikanın süresinin dolmasının, satılmış ürünlerin tamamını kullanılamaz hale getirebilmesi oldukça sarsıcıydı. Bu durumda başka bir sağlayıcının geçerli kök sertifikası olduğu için büyük bir sorun yaşanmadı
Hatta CA/Browser Forum’un belirlediği tarihten sonra bile bunları vermeye devam ettiler. O zaman herkesin Web PKI kullanmasının, ama güncelleme dağıtmanın bir yolu olmamasının birbiriyle bağdaşmadığını fark ettiğini sanmıştım; ama öyle değilmiş
Çapraz imzalama sunulduktan hemen sonra, masaüstünü hedefleyen sitelerde çapraz imzalı sertifikalar kaldırılmaya başlanmıştı
Çünkü daha önce olmayan uyumluluk sorunları ortaya çıktı ve bazı sertifika doğrulayıcıları süresi dolmuş kök sertifikada takılıp kaldı. Etkilenen kullanıcılar teknik olmayan kişiler olduğundan, kök neden hiçbir zaman tam olarak anlaşılamadı