LetsEncrypt ile Sunucu Güvenliği

SSL sertifikalarının artık bulunması-hoş bir güvenlik katmanı olmaktan çıkıp, bulunması-gereken bir güvenlik unsuru haline gelmesiyle birlikte; tüm sunucular için kullanılabilir, erişilebilir, otomasyona dahil edilebilir ve ücretsiz bir çözüm olarak İnternet Güvenlik Araştırmaları Grubu (Internet Security Research Group-ISRG) tarafından LetsEncrypt (LE) adında bir açık sertifika otoritesi (open certificate authority) oluşturuldu. Söz konusu, kâr amacı gütmeyen yapının; Mozilla’dan Facebook’a, Akamai’den Cisco’ya kadar sektörün birçok oyuncusundan ciddi destek almasıyla birlikte de SSL pazarında ciddi bir paya sahip olma yolunda emin adımlarla ilerlediğini söyleyebiliriz. Böyle bir hizmetin nasıl ücretsiz verildiğine dair muhtemel sorularınıza LE’nin sık sorulan sorular kısmında yanıt bulabilirsiniz.

Wikipedia’nın tanımıyla LetsEncrypt:

12 Nisan 2016 tarihinde faaliyet göstermeye başlamış, tedavüldeki SSL çözümlerinin; elle yapılan oluşturma, doğrulama, imzalama, kurulum ve yenileme süreçlerinin tamamını otomatikleştirilmiş süreçlerle işletebilen, güvenli internet sitelerine “Transport Layer Security” (TLS) için X509 sertifikaları düzenleyen bir sertifika otoritesidir.

Nasıl kullanabiliriz?

LE’nin otomatikleştirilmiş süreçlerle işleyen tasarımı, sunucularınızda çalıştırdığınız sertifika talep/yenileme komutlarının LE API’ı ile iletişime geçerek; sertifika isteğinizin doğrulanmasını, oluşturulmasını, sunucunuza alınmasını ve hatta web sunucunuzun otomatik olarak ayarlanmasını dahi içeriyor. Üstelik tüm bu işlemler için sertifikayı kullanacak olan sunucuda LE ile uyumlu istemcilerden birisinin kurulu olması yeterli. LE altyapısına erişmenizi sağlayacak, kayıtlı onlarca farklı istemci bulunsa da Yonca Teknoloji’de tercihimiz Certbot’tan yana.

Certbot

Certbot, neredeyse piyasadaki tüm *NIX tabanlı sistemlerle uyumlu ve bu sistemlerde çalıştırabileceğiniz tüm web sunucusu yazılımlarını destekliyor. İnternet sitesine girdiğinizde anasayfada sizi karşılayan formda; işletim sistemi ve web sunucusu seçimlerini yaptığınızda, kurulumu nasıl yapabileceğinizi öğrenebilir, daha ayrıntılı ihtiyaçlarınız için ise ServerFault ya da Google’dan hali hazırdaki birçok kaynağa ulaşabilirsiniz. Özellikle DigitalOcean’ın sorunsuz uygulanabilen birçok kaynağı internette bulabileceğiniz en kaliteli LE kaynakları arasında.

Gelelim, nasıl çalıştığına…

Sunucunuzdaki LE istemciniz üzerinden bir sertifika isteğinde bulunduğunuzda istemci, web sunucunuzun webroot’unda /.well-known/acme-challenge/ yolunda istemciye LE API’ı üzerinden iletilen rastgele isimde bir dosya oluşturuyor ve sizin sertifika talebinde bulunduğunuz alan adı üzerinden HTTP protokolü ile (bu noktaya yazının ilerleyen bölümünde yeniden değineceğiz) bu dosyaya ulaşmaya çalışıyor. Sorunsuz bir şekilde erişmesi, söz konusu alan adının hizmet verdiği sunucunun size ait olduğu anlamına geldiği için, yetkilendirmeyi başarı ile tamamlıyor ve sertifikayı oluşturarak sunucunuza gönderiyor.

Kaynak: DigitalOcean.com

LE Sertifikalarının Özellikleri ve Kısıtları

LE’nin düzenlediği sertifikalar; (1) 90 gün boyunca geçerli, (2) (alışkın olduğumuzun aksine) birden fazla alan adına ait tek bir sertifika olarak düzenleniyor (3) Wildcard sertifika olarak (şimdilik) düzenlenemiyor (4) Hiçbir zaman genişletilmiş-doğrulama (EV) sertifika desteğine sahip olmayacak.

Bu kısıtlardan, 90 günlük sertifika süresi alışkın olduğumuz bir şey olmadığı için; birkaç şey söylemek istiyorum. Öncelikle, sertifikaları Cron ile otomatikleştireceğiniz bir istek yardımıyla otomatik yenileyebildiğinizi hatırlatmak istiyorum. Çalışma sisteminin bu şekilde tasarlanmasının nedeni ise, ekstra güvenlikten başka bir şey değil. Sadece doksan gün geçerli olan ve doksan günde bir yenilenen sertifikanın, bir yıl boyunca geçerli başka bir sertifikadan daha güvenli olduğunu söylemeye gerek yok sanırım. OWASP Wiki’sine göre Google, hizmetlerine ait SSL sertifikalarını her ay yeniliyor. LE’nin sertifikaları 90 gün geçerli olmasına rağmen siz de sertifikalarınızı her ay otomatik olarak yenilemeyi seçebilirsiniz.

Bu kısıt bahisinde, son olarak; LE’nin hizmet kalitesini belli düzeyde tutabilmek için bir dizi kullanım limitine sahip olduğunu söylemiş olayım. Örneğin, aynı alan adı için bir hafta içinde 20 kereden daha fazla sertifika talebinde bulunamıyorsunuz. Bu limitlerin tamamına LE’nin internet sitesindeki ilgili kullanım limitleri bölümünden ulaşabilirsiniz.

Sadece 443. portu açık sunucuya LE ile SSL kurulumu

Yazının “Gelelim nasıl çalıştığına…” başlıklı bölümünde değindiğim gibi LE doğrulama işlemi HTTP protokolü üzerinden gerçekleştiği için sadece 443. portu açık sunucuya LE ile SSL kurulumu yapmanız mümkün değil. Sunucunun 80. portunun da dışarıdan erişime açık olması gerekiyor.

Sunucunun HTTP üzerinden gelen istekleri de dinliyor olması aslında sizin uygulama ve hizmetlerinize ilişkin tasarım kararlarınızı değiştirmenizi gerektirmiyor. HTTP üzerinden sadece LE’nin çalışabilmesine yönelik ufak bir konfigürasyon ile hem SSL sertifikası edinimini hem de yenilemesini sorunsuz çalışır hale getirebilirsiniz. Aşağıda bu işlemi Nginx için bizim nasıl yaptığımızı bulabilirsiniz, diğer web sunucuları için de aşağıdaki konfigürasyonu uyarlamanız yeterli olacaktır.