
Evde herhangi bir iş için bir lab ortamı kurduysanız ya da benim gibi akıllı ev sistemleri ile ilgileniyorsanız mutlaka sertifika sorunlarına denk gelmişsinizdir. Kabaca tarayıcınız ile sunucu arasındaki yolu şifreleyerek haberleşmenin taraflar arasında gizli kalmasını sağlayan ve İnternet’in temel taşlarından birisi olan SSL protokolüyle günümüz dünyasında, meraklı gözleri, olabildiğince ne yaptığımızdan uzakta tutabiliyoruz. Peki İnternet şubesinden havale yaparken olmazsa olmaz olan SSL’in evimizde ne işi var?
Günümüzde çoğu web sitesi SSL protokolünü öntanımlı iletişim protokolü haline getirmiş durumda. Bilgi güvenliğinin ve mahremiyetin öneminin artması ve ticari boyutun büyümesiyle bu alanda artık bir farkındalık oluştuğunu söyleyebiliriz. Elbette tarayıcıların ve bilgisayarların bazı hizmetleri sunmak için otomatik olarak SSL bağlantısı istemesi hatta bazı servislere SSL olmadığı için bağlanmayı reddetmesi de bizi bu yönde olumlu olarak zorlayan bir etmen.
Şu anda ziyaret ettiğiniz bu sayfa her ne kadar sizden kişisel bilgilerinizi paylaşmanızı istemese (Google Analytics’i saymıyorum – tabi onu saymadan nasıl olacaksa) ya da size herhangi bir ürün satmaya çalışmasa bile şifreli bağlantı üzerinden hizmet veriyor. Bunu bana ek bir mali külfet getirmeden yapabilmemi sağlayansa herkesin kullanması gerektiğine inandığım bir servis olan Let’s Encrypt!
Bu blog yazısının konusu Let’s Encrypt olmadığıDAN sizi eskiden yazdığım bir blog yazısına davet edeyim.
Evde Neden Sertifika Kullanalım?
Elbette yerel ağımız içerisinde dolaşırken iki istemcinin arasında olan trafiğin üçüncü bir kişi tarafından izlenmesi pek beklenen bir şey değildir. Bizim burada SSL kullanmamımızın asıl nedeni modern tarayıcıların bazı özellikler için (bildirim, WebRTC vb.) mutlaka konuştukları sunucu ile SSL bağlanmak istemesi. O yüzden bu yazıda ev sunucumuzda zahmetsiz bir şekilde nasıl sertifika edineceğimizi anlatmaya çalışacağım.
Bir SSL sertifikası bilgisayarında gerekli yazılımları olan herkes tarafından kolayca üretilebilir. Bunun önünde hiç bir engel yoktur. Evde kendi imkanlarınızla ürettiğiniz sertifika aynı parametrelerle sokakta üretilmiş bir sertifikadan daha güvenli ya da daha az güvenli değildir.
Eğer bir fark yoksa neden sertifikamızı kendi bilgisayarımız yerine bu iş için aracı olan bir yerde üretiyoruz diye düşünebilirsiniz. Bunun nedeni sertifikaya duyulan güvenle ilgilidir. İşi sertifika üretmek olan kurumlar bu işi ister ticari ister ücretsiz yapıyor olsunlar tarayıcılar ve işletim sistemleri tarafından güvenilmeleri için bir akreditasyondan geçmekle yükümlüdürler. Her bir tarayıcının ya da işletim sisteminin benzer bu akreditasyonu firmanın sertifika üretme sürecinden sertifika talep eden bir kişinin talebini nasıl onayladığına dair tüm süreçlerini incelemekten oluşur. Tarayıcınız ancak kendi veritabanında kayıtlı olan organizasyonların verdikleri sertifikalara güvenirler. Bu uzun paragrafın pratikteki karşılığıysa kendi ürettiğiniz sertifika ile bir sunucuya bağlanmaya çalışırken aldığınız sertifika hatasıdır.
Eğer tarayıcınız kendi güvenilir listesinde olmayan bir organizasyonca üretilmiş bir sertifika aracılığıyla bağlanmaya çalışıyorsa bağlantı isteğini reddedebilir ya da bir hata verebilir. Bunu çözmek için izleyebileceğiniz birden fazla yol mevcut. İlk olarak kendi sertifikanıza tarayıcınızın güvenmesini sağlayabilirsiniz. Bunu masaüstünde yapmak son derece kolay olsa bile mobil cihazlarda bunu yapmak o kadar kolay değil. Bir de üstüne ev halkının kullandığı cihazları da katarsanız çok sayıda kişi ve cihaz için bu hareketi tekrarlamanız gerekebilir.
Yerel Ağda Sertifika Kullanmak
Sertifika normal şartlar altında sertifikayı üreten organizasyonun sizin siz olduğunuzdan ve alan adınız üstünde kontrolünüz olduğunuzdan emin olunduğu zaman verilir. O yüzden (ve bazı başka pratik sebeplerden dolayı) yerel ağınızda kullandığınız örneğin 192.168.1.26 adresi için sertifika almanız mümkün değildir. Peki bu durumu nasıl aşabiliriz?
İşte bu sorunun cevabı wildcard sertifika desteğinde yatıyor. Bir wildcard sertifika standart bir SSL sertifikasından bağımsız olarak o alan adının içinde yer alacak tüm alt alan adlarını kapsayacak şekilde üretilir. Yani standart bir sertifikada altalanadi.alanadim.com şeklinde bir sertifikaya sahipken wildcard bir sertifikada *.alanadim.com için sertifikanız var demektir.
Bu sayede elinizde sertifikanın kendisine ve anahtarına sahip olduğunuz sürece bu alan adına çözülen her SSL bağlantısı için tarayıcı tarafında ek bir işleme gerek kalmadan kullanacağınız bir geçerli sertifikanız olacaktır.
Tabi bir sonraki aşamada ihtiyacınız olan şey ise alan adınızı yerel IP adresinize çözecek bir DNS sunucusu olacak. Bunu dilerseniz dışarıda da tutabilirsiniz ama ben evde Ad Guard kullandığım ve bu yönlendirme bana zaten sadece ev içinde gerektiği için yönlendirmeyi yerelde yapıyorum.
Sıra geldi sertifikayı almaya!
Let’s Encrypt ve DNS Challenge
Let’s encrypt 90 günlük dönemlerde SSL sertifikasını ücretsiz oluşturmamıza izin verdiğinden ve doğrulama yöntemi olarak DNS’i de kullanmamıza izin verdiğinden ben bu iş için onu tercih ediyorum.
Sistem tam olarak şöyle çalışıyor. LE’nin sertifika temin aracı olan Certbot ile alan adımız için bir sertifika isteğinde bulunuyoruz. Let’s Encrypt alan adının bize ait olduğunu teyit etmek için bir DNS kaydı oluşturmamızı istiyor. Certbot eğer alan adımız desteklenen bir DNS sağlayıcı tarafından yönetiliyorsa bu kaydı sizin adınıza oluşturuyor ve Let’s Encrypt sunucusunun kaydı kontrol etmesini istiyor. Eğer oluşturulan kayıtla talep edilen kayıt birbirini tutuyorsa sunucu alan adı için talep ettiğiniz sertifikayı oluşturup Certbot’a teslim ediyor.
Tüm bu söylediklerimi yapabilmek için komut satırında çalışmanız gerekecek. Neler yapmamız gerektiğine birlikte bakalım.
Certbot Kurulumu ve Sertifika Alımı
Bir önceki yazıda belirttiğim gibi ben evdeki bilgisayarımda Fedora kullanıyorum. Bu sebeple kurulumu Fedora’ya göre yapıyorum. Siz kendi işletim sisteminizin paket kurulumuna göre ilgili ayarları yapabilirsiniz.
Öncelikle certbot paketini kuralım.
$ sudo dnf install certbot
Certbot kurulumunu yaptıktan sonra DNS doğrulaması için ilgili eklentiyi kurmamız gerekiyor. Certbot yaklaşık 12 farklı firmanın otomasyonunu destekliyor. Ben Digital Ocean kullanıyorum ve devamında anlatımı buna göre yapacağım.
Digital Ocean eklentisinin kurulumunu yapalım.
$ sudo dnf install python3-certbot-dns-digitalocean
İlgili paketlerin kurulumunu yaptıktan sonra tamamlamamız gereken adım DO ile iletişim kurmak için bir API anahtarı oluşturmakta. Bunun için DO yönetim panelinde API sayfasına gidip yeni bir anahtar oluşturmanız gerekiyor. Yetki olarak yazma yetkisini de seçtikten sonra dilerseniz bu anahtarı bilgisayarınıza kaydedebilirsiniz.
Ben bu dosyayı işlemleri yaptığım kullanıcının ev dizininde .secrets/certbot dizininde oluşturdum ve dosyayı digitalocean.ini ismiyle oluşturdum. Dosyanın içeriğinin aşağıdaki gibi olması yeterli
dns_digitalocean_token = <api_anahtarınız>
Burada bir noktaya dikkatinizi çekmek isterim. Bu anahtarı DO parolanız kadar korumanız gerekiyor. O yüzden dikkatli olun derim. İyi bir pratik olarak dosya iznini sadece kullanıcınızın okuyabileceği şekilde vermeniz (600) iyi olabilir.
Şimdi sertifikamızı talep edebiliriz.
certbot certonly \
--dns-digitalocean \
--dns-digitalocean-credentials ~/.secrets/certbot/digitalocean.ini \
-d *.alanadim.com
Verdiğimiz komutu inceleyecek olursak
certonly parametresi ile bilgisayarımızda o anda çalışan bir web sunucu olmadığı bilgisini verdik.
dns-digitalocean ile kullanmak istediğimiz eklentinin çalışmasını sağladık.
dns-digitalocean-credentials ile de anahtarımızın olduğu dosyanın yolunu verdik.
Son olarak -d parametresi ile sertifika almak istediğimiz alan adının adresini wildcard olarak verdik. Elbette bu alan adının size ait olması gerektiğini ve dns servisinin DO’da yönetilmesi gerektiğini söyleme gerek yok =)
Bu aşamadan sonra certbot çalışacak ve yukarıda açıkladığım süreci gerçekleştirecek. Eğer ilk defa sertifika alıyorsanız sizden e-posta adresinizi ve iletişim izninizi de isteyecek. Bu sayede sertifikanızın süresi dolmaya yaklaşırken haberdar olabileceksiniz. Bu komutu bir cron işi haline getirerek sertifikanızın her bitmeye yaklaştığı dönemde otomatik olarak da yenilenmesini sağlayabilirsiniz.
Komut başarıyla çalıştığında /etc/letsencrypt/live/alanadim.com yolunda oluşan sertifika dosyalarını bulabilirsiniz. Bir küçük hatırlatma da burada yapayım. Oluşan bu dosyaların güvenliği son derece önemli.
Bu sertifikayı kullanarak ev ortamında verdiğiniz servislerin SSL üzerinden çalışmasını ve bunu sağlarken de sertifikanızın tarayıcı tarafından güvenilmesini sağlayabilirsiniz.
Bir sonraki yazıda görüşmek üzere.
Kaynaklar: Certbot kullanım kılavuzu
Bir yanıt bırakın