Let’s Encrypt nedir ve nasıl çalışır?
Bu flood’da Let's Encrypt
'in ne olduğundan ve nasıl çalıştığından bahsedeceğim.
Let's Encrypt
web sunucuların HTTP
yerine HTTPS
kullanılmasını yaygınlaştırmak üzere SSL/TLS sertifikaların ücretsiz olarak üretilmesi ve dağıtılması amacıyla kurulmuştur. Sektörün önde gelen şirketleri bu servise sponsor olarak devamlılığını sağlamaktadır.
Let's Encrypt
öncesinde SSL/TLS sertifikası almanın tek yolu Verisign
, GlobalSign
, Thawte
gibi firmalara birkaç yılda bir 50 dolar civarında bir ücret ödemekti. Bu şirketler Certificate Authority - CA
kimliği ile kişi ve kurumlar için hala sertifika üretmektedir.
Önceki flood’ların birinde web sunucularında kullanılabilecek SSL/TLS sertifika tiplerini belirtmiştik https://medium.com/@gokhansengun/3427bcd4a576
Geleneksel CA
'ler yukarıdaki yazıda sıralanan üç yöntemle de sertifika üretebilirler. Let's Encrypt
ise sertifika türlerinden sadece Domain Validation - DV
tipindeki sertifikaları üretmektedir. Bunun sebebi Organization Validation - OV
ve Extended Validation - EV
sertifikalarının doğaları ve sundukları fayda gereği üretim süreçlerinde insan dahli gerektirmeleridir.
Let's Encrypt
servisi Şubat 2019 itibariyle günde yaklaşık 1 milyon adet DV
sertifika üretmektedir. Bu hacimdeki bir üretimi süreci otomize etmeden yapmak anlaşılacağı üzere mümkün değildir. Neyse ki Let's Encrypt
, sertifikaları tamamiyle otomize bir şekilde yapmaktadır.
Let's Encrypt
'in SSL/TLS sertifikalarını üretebilmek için SSL/TLS sertifikası isteyen sunucunun sertifika istediği domain'e gerçekten hakim olup olmadığını doğrulaması gerekir. Bu doğrulama iki şekilde yapılabilir.
DNS Challenge
adlı ilk yöntemde Let's Encrypt
istekte bulunulan domain'e kendi ürettiği random bir metin ile TXT
tipinde bir DNS kaydı eklenmesini ister. Örneğin example․com
'a sertifika üretmek için a345ade212d30․example․com
değeri ile TXT
kaydı sorgulanır.
Let's Encrypt
belirli aralıklarla ilgili TXT
kaydının oluşturulup oluşturulmadığını kontrol eder. Eğer sertifikayı talep eden kişi sertifikaya konu olan domain'e hakimse kaydı belirli bir sürede oluşturur ve sertifika üretilir değilse sertifika üretilmez.
HTTP Challenge
adlı ikinci yöntemde ise Let's Encrypt
yine kendi ürettiği bir random metnin sertifika üretilecek domain'den HTTP
ile sunulmasını ister. Örneğin example․com
için http://example․com/a345ade212d30
adresinden ilgili dosyayı çekebilmeyi bekler.
Anlaşılacağı üzere bu doğrulama tipinde de Let's Encrypt
sertifika talebinin gerçekten doğru kaynaktan gelip gelmediğini rahatlıkla doğrulayabilmektedir. Bu yöntem bazı durumlarda ilkine göre daha kolay otomize edilebilmektedir ve yazarın genel tercihidir.
Let's Encrypt
'in sertifika üretiminde kullanıldığı yukarıdaki yöntemler ACME - Automatic Certificate Management Environment
adı verilen internet protokolünde detaylandırılmıştır. İsteyen herkes bu protokolü kullanarak kendi istemcisini yazabilir.
Sertifika üretimini kolaylaştırmak için Let's Encrypt
Certbot
adında bir referans implementasyon sağlamaktadır. Açık kaynak kodlu Certbot
bir sunucuda agent olarak çalışarak Let's Encrypt
sunucuları ile sertifika üretim işini yönetmektedir.
Geleneksel sertifikalar 1 ya da 2 yıllık olarak üretilir. Let's Encrypt
ise sertifika üretim işini otomize ettiği için sertifikaları geçerliliği 90 gün olacak şekilde üretmektedir. Certbot
süresi dolmaya yakın sertifikaları otomatik olarak yenileyebilmektedir.
AWS
ve Google Cloud
üzerinde çalışan servisler için AWS
ve Google Cloud
da Let's Encrypt
benzeri ücretsiz servisler sağlamaktadır. Bu ortamlarda Let's Encrypt
yerine bulutta bulunan yük dağıtıcılarla entegre olan yerel servislerin kullanılması daha pratiktir.
Son olarak akla Let's Encrypt
'in ücretsiz sağladığı bu servisle bütün web sitelerinin SSL/TLS sertifikalarını üreterek bu sitelere gelen trafiği çözebileceği fikri gelebilir :)
Aşağıdaki yazı okunduğunda anlaşılacağı üzere Let's Encrypt
, CA
olarak sertifika ürettiği domain'lerin kullandığı Private Key
'leri bilmemekte ve ACME
çerçevesinde bu anahtarları istemciden istememektedir.