Takip et

Giriş: Certbot Standalone Modu ve Let’s Encrypt

Giriş: Certbot Standalone Modu ve Let’s Encrypt Günümüzde web sitelerinin güvenliği, kullanıcı deneyimi ve arama motoru sıralamaları i

Giriş: Certbot Standalone Modu ve Let’s Encrypt

Günümüzde web sitelerinin güvenliği, kullanıcı deneyimi ve arama motoru sıralamaları için vazgeçilmez bir unsurdur. SSL/TLS sertifikaları, sunucu ile istemci arasındaki iletişimi şifreleyerek bu güvenliği sağlar. Let’s Encrypt, bu sertifikaları ücretsiz, otomatik ve açık bir şekilde sunan, kâr amacı gütmeyen bir sertifika yetkilisidir (CA). Let’s Encrypt sertifikalarını sunucunuza kurmanın en popüler ve kullanımı kolay yolu ise Certbot aracıdır.

Certbot, Let’s Encrypt ile etkileşim kuran ve sertifika alma, kurma ve yenileme süreçlerini otomatikleştiren bir yazılımdır. Çoğu zaman Certbot, Apache veya Nginx gibi mevcut bir web sunucusuyla entegre çalışarak sertifika kurulumunu yapar. Ancak, bazen bir web sunucusu kurulu değildir veya sertifikayı farklı bir hizmet (örneğin bir e-posta sunucusu, VPN veya özel bir uygulama) için almak istersiniz. İşte bu noktada Certbot’un “Standalone” (Bağımsız) modu devreye girer.

Certbot Standalone modu, sertifika alma sürecinde Certbot’un kendi geçici web sunucusunu (genellikle 80 veya 443 numaralı port üzerinden) başlatarak Let’s Encrypt’in “HTTP-01” veya “TLS-ALPN-01” doğrulama meydan okumasını tamamlamasını sağlar. Bu sayede, sunucunuzda başka bir web sunucusu çalışmıyorken veya port 80/443’ü geçici olarak boşaltabiliyorsanız, kolayca SSL sertifikası alabilirsiniz. Bu rehberde, Debian 10 işletim sistemi üzerinde Certbot Standalone modunu kullanarak Let’s Encrypt SSL sertifikalarını nasıl alacağınızı adım adım inceleyeceğiz.

Ön Hazırlık ve Sistem Güncelleme

Certbot kurulumuna ve sertifika alma işlemine başlamadan önce bazı ön hazırlık adımlarını tamamlamanız gerekmektedir. Bu adımlar, sorunsuz bir kurulum süreci için kritik öneme sahiptir.

Sistem Gereksinimleri

  • Debian 10 Sunucusu: Bu rehber Debian 10 için yazılmıştır. Farklı Debian veya Linux dağıtımlarında komutlar benzer olsa da küçük farklılıklar olabilir.
  • Root Erişimi veya sudo Yetkisi: Certbot kurulumu ve sertifika işlemleri için yönetici yetkilerine ihtiyacınız olacaktır.
  • İnternet Bağlantısı: Sunucunuzun Let’s Encrypt sunucularına erişebilmesi gerekmektedir.
  • Alan Adı (Domain Name): Sertifika almak istediğiniz bir alan adınız olmalı (örneğin, example.com).
  • DNS Yönlendirmesi: Alan adınızın (veya alt alan adınızın) A kaydının, sertifikayı kuracağınız sunucunun genel IP adresine doğru şekilde yönlendirilmiş olması ve bu yönlendirmenin DNS sunucularında yayılmış olması gerekmektedir. Certbot, alan adının gerçekten sizin kontrolünüzde olduğunu doğrulamak için bu kaydı kullanacaktır.

Paket Güncelleme

Herhangi bir yazılım kurulumuna başlamadan önce sisteminizdeki paket listesini güncelleyip mevcut paketleri yükseltmek iyi bir pratiktir. Bu, olası bağımlılık sorunlarını önler ve en son güvenlik yamalarını almanızı sağlar.

sudo apt update
sudo apt upgrade -y

Bu komutlar, sisteminizdeki paket bilgilerini güncelleyecek ve mevcut tüm kurulu paketleri en yeni sürümlerine yükseltecektir.

Certbot Kurulumu

Certbot’u Debian 10’a kurmanın birkaç yolu vardır. En güncel ve önerilen yöntem Snap paket yöneticisini kullanmaktır. Alternatif olarak, APT paket yöneticisi ile de kurulum yapabilirsiniz ancak bu yöntem genellikle daha eski Certbot sürümlerini getirir.

Snap ile Kurulum (Önerilen Yöntem)

Snap, uygulamaları bağımsız ve güncel tutan bir evrensel paketleme sistemidir. Certbot ekibi de Snap üzerinden en güncel sürümleri sağlamayı önermektedir.

  1. Snapd Kurulumu: Eğer sunucunuzda Snapd kurulu değilse, öncelikle onu kurmanız gerekir:

    sudo apt install snapd -y
  2. Snapd Yolu Ekleme (Gerekliyse): Snapd kurulduktan sonra, sisteminizin PATH değişkeninde Snapd’nin bin dizininin olduğundan emin olun. Genellikle bu otomatik olarak yapılır, ancak bazen manuel müdahale gerekebilir. Aşağıdaki komut, PATH’i güncelleyerek Snap çekirdek dosyalarının doğru şekilde yüklendiğinden emin olur:

    sudo snap install core; sudo snap refresh core
  3. Eski Certbot Sürümlerini Kaldırma (Varsa): Daha önce APT ile Certbot kurduysanız, çakışmaları önlemek için onu kaldırmanız önerilir:

    sudo apt remove certbot -y
  4. Certbot’u Snap ile Kurma: Şimdi Certbot’u Snap üzerinden kurabilirsiniz:

    sudo snap install --classic certbot
  5. Certbot Komutunu PATH’e Bağlama: Certbot komutunun sistem genelinde çalışabilmesi için bir sembolik bağlantı oluşturmanız gerekebilir:

    sudo ln -s /snap/bin/certbot /usr/bin/certbot

    Bu, certbot komutunu doğrudan kullanmanızı sağlar.

Alternatif: APT ile Kurulum (Eski Yöntem)

Eğer Snap kullanmak istemiyorsanız veya sisteminizde zaten mevcutsa, Certbot’u APT paket yöneticisi ile de kurabilirsiniz. Ancak bu yöntemle genellikle Certbot’un daha eski bir sürümünü alırsınız ve bu da bazı yeni özelliklerden mahrum kalmanıza neden olabilir.

sudo apt install certbot -y

Bu komut Certbot’u kuracaktır. Kurulum sonrası Certbot’un çalışıp çalışmadığını certbot --version komutu ile kontrol edebilirsiniz.

Certbot Standalone Modu ile SSL Sertifikası Alma

Certbot Standalone modu, sunucunuzda başka bir web sunucusu çalışmıyorken veya geçici olarak durdurulabiliyorsa sertifika almak için idealdir. Bu modda Certbot, doğrulama sırasında kendi küçük web sunucusunu başlatır.

Standalone Modunun Çalışma Prensibi

Let’s Encrypt, bir alan adının kontrolünüzde olduğunu doğrulamak için çeşitli “meydan okuma” yöntemleri kullanır. Standalone modu, “HTTP-01” meydan okumasını kullanır. Bu meydan okumada:

  1. Certbot, Let’s Encrypt’ten özel bir token alır.
  2. Certbot, sunucunuzda geçici olarak 80 numaralı portta (veya --tls-alpn kullanırsanız 443 numaralı portta) küçük bir web sunucusu başlatır.
  3. Bu sunucu, Let’s Encrypt’ten gelen token ile birlikte belirli bir URL’de (örneğin, http://example.com/.well-known/acme-challenge/) bir doğrulama dosyası yayınlar.
  4. Let’s Encrypt sunucuları, alan adınız üzerinden bu URL’ye erişerek doğrulama dosyasını kontrol eder. Eğer dosya doğruysa, alan adının kontrolünüzde olduğunu onaylar ve sertifikayı verir.

Önemli Not: Sertifika alma işlemi sırasında sunucunuzun 80 numaralı portunun (veya 443’ün) boş olması gerekmektedir. Eğer Apache, Nginx gibi bir web sunucusu bu portu kullanıyorsa, sertifika alma işlemi sırasında o servisi geçici olarak durdurmanız gerekecektir. Aksi takdirde Certbot kendi sunucusunu başlatamaz ve hata verir.

Sertifika Talep Etme

Tek bir alan adı için sertifika talep etmek oldukça basittir:

sudo certbot certonly --standalone -d example.com

Bu komutu çalıştırdığınızda Certbot sizden bazı bilgiler isteyecektir:

  • E-posta Adresi: Sertifika süresi dolmadan önce uyarılar almak ve önemli bildirimler için bir e-posta adresi girin.
  • Hizmet Şartlarını Kabul Etme: Let’s Encrypt’in hizmet şartlarını kabul etmeniz gerekecektir.
  • E-posta Paylaşımı: EFF (Electronic Frontier Foundation) ile e-posta adresinizi paylaşmak isteyip istemediğiniz sorulacaktır.

Tüm bu adımları tamamladıktan sonra, Certbot sertifika alma işlemini gerçekleştirecek ve başarılı olursa sertifikalarınızın nerede saklandığını size bildirecektir.

Birden Fazla Domain İçin Sertifika Talep Etme

Aynı sertifika altında birden fazla alan adı (örneğin, hem example.com hem de www.example.com) için sertifika almak istiyorsanız, -d parametresini birden fazla kez kullanabilirsiniz:

sudo certbot certonly --standalone -d example.com -d www.example.com -d sub.example.com

Bu, tüm belirtilen alan adları için tek bir SAN (Subject Alternative Name) sertifikası oluşturacaktır.

Sertifika Dosyalarının Konumu

Certbot, sertifikaları genellikle aşağıdaki dizin yapısında saklar:

/etc/letsencrypt/live/example.com/

Bu dizin içinde aşağıdaki önemli dosyaları bulacaksınız:

  • privkey.pem: Özel anahtarınız. Bu dosya gizli kalmalıdır.
  • cert.pem: Alan adınıza ait sunucu sertifikası.
  • chain.pem: Ara sertifikalar (Let’s Encrypt CA zinciri).
  • fullchain.pem: cert.pem ve chain.pem dosyalarının birleşimi. Çoğu web sunucusu veya uygulama bu dosyayı kullanır.

Bu dosyaları, kullanmak istediğiniz hizmetin (örneğin Nginx, Apache, Postfix, Dovecot vb.) yapılandırma dosyalarında belirtmeniz gerekecektir.

Sertifikaların Otomatik Yenilenmesi

Let’s Encrypt sertifikaları 90 gün geçerlidir. Bu kısa süre, güvenlik risklerini minimize etmek ve otomasyonu teşvik etmek için bilerek belirlenmiştir. Sertifikalarınızın süresi dolmadan yenilenmesi kritik öneme sahiptir.

Yenileme Süreci

Certbot, sertifikaları otomatik olarak yenilemek için bir renew komutuna sahiptir. Bu komut, sadece süresi dolmaya yakın olan (genellikle 30 gün içinde) sertifikaları yeniler. Yenileme işlemi sırasında Certbot, ilk sertifika alımında kullanılan doğrulama yöntemini (bu durumda Standalone modu) tekrar kullanmaya çalışır.

Neyse ki, Certbot’u Snap ile kurduğunuzda, sistem otomatik olarak bir systemd zamanlayıcı birimi veya cron işi oluşturur. Bu, certbot renew komutunun düzenli olarak (genellikle günde iki kez) çalıştırılmasını sağlar.

systemd zamanlayıcının durumunu kontrol etmek için:

sudo systemctl status snap.certbot.renew.service
sudo systemctl status snap.certbot.renew.timer

Eğer Certbot’u APT ile kurduysanız, genellikle /etc/cron.d/certbot içinde bir cron işi bulunur.

Yenilemeyi Test Etme

Otomatik yenileme sisteminin doğru çalıştığından emin olmak için bir “deneme sürüşü” yapabilirsiniz. Bu komut, gerçek bir yenileme yapmadan süreci simüle eder:

sudo certbot renew --dry-run

Eğer bu komut başarılı bir şekilde tamamlanırsa, otomatik yenileme işleminizin büyük olasılıkla sorunsuz çalışacağı anlamına gelir. Herhangi bir hata alırsanız, sorunu gidermeniz gerekecektir.

Önemli: Standalone modu ile sertifika yenilerken de port 80’in (veya 443’ün) boş olması gerekir. Eğer sunucunuzda sürekli çalışan bir web sunucusu varsa, Certbot otomatik yenileme sırasında bu servisi geçici olarak durdurup tekrar başlatmak için --pre-hook ve --post-hook seçeneklerini kullanabilir. Ancak bu durum genellikle Certbot’un Apache/Nginx eklentileriyle çözüldüğü için Standalone modunda manuel durdurma/başlatma daha yaygındır.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Bu rehberde, Debian 10 üzerinde Certbot Standalone modunu kullanarak Let’s Encrypt SSL sertifikalarını nasıl alacağınızı, kuracağınızı ve otomatik olarak yenileyeceğinizi öğrendiniz. Standalone modu, özellikle mevcut bir web sunucusu olmayan veya sertifikayı farklı bir hizmet için almak isteyen kullanıcılar için son derece esnek ve kullanışlı bir yöntemdir. Güvenli bir internet için SSL sertifikalarının önemi göz ardı edilemez ve Let’s Encrypt ile Certbot bu süreci herkes için erişilebilir kılmaktadır.

Sıkça Sorulan Sorular (SSS)

Standalone modu neden kullanmalıyım?
Sunucunuzda Apache veya Nginx gibi bir web sunucusu kurulu değilse veya sertifikayı bir web sunucusu dışında bir hizmet (örneğin VPN, e-posta sunucusu) için almak istiyorsanız Standalone modu idealdir. Ayrıca, web sunucunuzun port 80/443’ü geçici olarak boşaltabiliyorsanız da kullanabilirsiniz.
Sertifika yenileme neden otomatik değil gibi görünüyor?
Certbot’u Snap ile kurduğunuzda, otomatik yenileme için bir systemd zamanlayıcı birimi kurulur ve bu, certbot renew komutunu düzenli olarak çalıştırır. APT ile kurduysanız, genellikle bir cron işi oluşturulur. Yani, yenileme işlemi zaten otomatiktir ve sizin manuel olarak çalıştırmanıza gerek yoktur. Sadece yenilemeyi test etmek için --dry-run komutunu kullanabilirsiniz.
Sertifika alırken “Port 80 is already in use” hatası alıyorum, ne yapmalıyım?
Bu hata, Certbot’un kendi geçici web sunucusunu başlatması gereken 80 numaralı portun başka bir servis (örneğin Apache, Nginx) tarafından kullanıldığını gösterir. Sertifika alma işlemi sırasında o servisi geçici olarak durdurmanız gerekmektedir. Örneğin: sudo systemctl stop nginx veya sudo systemctl stop apache2. Sertifika alındıktan sonra servisi tekrar başlatabilirsiniz: sudo systemctl start nginx.
Wildcard (joker karakter) sertifikası alabilir miyim?
Certbot Standalone modu (HTTP-01 meydan okuması) wildcard sertifikaları desteklemez. Wildcard sertifikaları (örneğin, *.example.com) almak için “DNS-01” meydan okumasını kullanmanız gerekir. Bu, DNS sağlayıcınızda belirli bir TXT kaydı oluşturmayı gerektirir ve certbot certonly --manual --preferred-challenges dns gibi bir komutla manuel olarak veya DNS sağlayıcınız için uygun bir Certbot eklentisiyle otomatik olarak yapılabilir.
Aldığım sertifikayı Nginx veya Apache gibi bir web sunucusuyla nasıl kullanırım?
Sertifikalarınız /etc/letsencrypt/live/example.com/ dizininde bulunur. Web sunucunuzun yapılandırma dosyasında (örneğin Nginx’te nginx.conf veya Apache’de sanal host dosyası), SSL bölümünde ssl_certificate ve ssl_certificate_key yönergelerini bu dosyalara (genellikle fullchain.pem ve privkey.pem) işaret etmelisiniz. Yenileme sonrası web sunucunuzu yeniden yüklemeniz veya yeniden başlatmanız gerekebilir.
Sertifikalarımı başka bir sunucuya nasıl taşıyabilirim?
Sertifika dosyalarını (fullchain.pem ve privkey.pem) /etc/letsencrypt/live/example.com/ dizininden güvenli bir şekilde (örneğin scp ile) kopyalayarak başka bir sunucuya taşıyabilirsiniz. Hedef sunucuda da bu dosyaları ilgili dizinlere yerleştirip web sunucunuzu yapılandırmanız gerekir. Ancak, otomatik yenileme işlevselliği için her sunucunun kendi Certbot kurulumuna sahip olması ve kendi sertifikalarını bağımsız olarak yenilemesi önerilir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık