Certbot Neden Ücretsiz Sertifika Dağıtımının Altın Standardıdır?
Sunucunuzda HTTPS'yi etkinleştirmek için CSR oluşturma, sertifika merkezine gönderme ve manuel onay bekleme zahmetiyle karşılaştıysanız, Certbot tam olarak bu süreci ortadan kaldıran araçtır. Certbot, Let's Encrypt projesinin resmi istemcisidir ve sertifika verme, kurulum ve yenileme sürecini tamamen otomatikleştirerek sunucunuzda SSL/TLS güvenli bağlantısını birkaç dakikadan kısa sürede kurar.
Bu makalede, temel DNS ve web sunucusu kavramlarına aşina olduğunuzu ancak Certbot ile daha önce deneyiminiz olmadığını varsayıyoruz. Amacımız, bu yazıyı okuduktan sonra sunucunuza ücretsiz sertifika kurabilmeniz, otomatik yenilemeyi yapılandırabilmeniz ve doğrulama sürecinde bir hata oluşursa kendinizin sorun giderebilmesidir. Sunucunuz veya bulut sunucunuz için yönetilen bir çözüm arıyorsanız, ServerNet barındırma hizmetleri Let's Encrypt sertifikalarının sorunsuz bir şekilde kullanılmasını da sağlar, ancak bu makalenin odak noktası özel sunucu veya VPS üzerinde manuel kurulumdur.
Certbot Kurulum Ön Koşulları
Herhangi bir işlem yapmadan önce aşağıdaki ön koşulların sağlandığından emin olun:
- Linux sunucusunda root veya sudo yetkisine sahip bir kullanıcı (Ubuntu, Debian, CentOS veya Rocky Linux dağıtımları)
- A kaydı sunucunuzun IP adresini gösteren bir alan adı. HTTP doğrulaması için alan adının 80 numaralı porttan erişilebilir olması gerekir.
- Kurulu web sunucusu (Apache veya Nginx) ve çalışan servisi.
- Sunucu güvenlik duvarında 80 ve 443 numaralı portların açık olması.
Önemli bir not: Alan adınız bir CDN veya ters proxy arkasındaysa, önce DNS kaydını doğrudan sunucunuzun IP adresine yönlendirin, aksi takdirde HTTP doğrulaması başarısız olur.
Yaygın Dağıtımlarda Certbot Kurulumu
Kurulum yöntemi dağıtımınıza göre değişir. Ubuntu ve Debian'da resmi depolar Certbot'un kararlı sürümünü içerir:
sudo apt update
sudo apt install certbot python3-certbot-nginx
Web sunucunuz Apache ise, nginx paketi yerine python3-certbot-apache kullanın. CentOS veya Rocky Linux'ta Snap kullanarak kurun:
sudo dnf install epel-release
sudo dnf install snapd
sudo systemctl enable --now snapd.socket
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Kurulumdan sonra certbot --version komutuyla kurulumun doğruluğunu kontrol edin. Çıktı sürümü gösteriyorsa, sertifika vermeye hazırsınız.
HTTP Doğrulaması ile Sertifika Verme
Sertifika vermenin en basit yolu, doğrulama dosyasını otomatik olarak web kök dizinine yerleştiren web sunucusu eklentisini kullanmaktır. Nginx için aşağıdaki komutu çalıştırın:
sudo certbot --nginx -d example.com -d www.example.com
Certbot size HTTP'den HTTPS'ye yönlendirmeyi etkinleştirmek isteyip istemediğinizi sorar. Tüm trafiğin otomatik olarak güvenli sürüme yönlendirilmesi için seçenek 2'yi seçin. Birkaç saniye sonra, sertifikanın kaydedildiği yol ile birlikte başarı mesajı görüntülenir.
Certbot'un web sunucusu ayarlarını değiştirmesini istemiyorsanız, webroot yöntemini kullanabilirsiniz:
sudo certbot certonly --webroot -w /var/www/example.com -d example.com
Bu yöntemde Certbot, /.well-known/acme-challenge/ dizininde geçici bir dosya oluşturur ve Let's Encrypt bunu HTTP üzerinden kontrol eder. -w yolunun alan adınızın web kök diziniyle tam olarak eşleştiğinden emin olun.
Özel Alan Adları için DNS Doğrulaması
Alan adınız bir CDN arkasındaysa, 80 numaralı port kapalıysa veya wildcard sertifikaya ihtiyacınız varsa, DNS doğrulaması kullanmanız gerekir. Bu yöntem, alan adının DNS'ine bir TXT kaydı eklemeyi gerektirir:
sudo certbot certonly --manual --preferred-challenges dns -d example.com -d "*.example.com"
Certbot size, alan adınızın DNS yönetim panelinde eklemeniz gereken bir TXT değeri gösterir. Kayıt yayıldıktan sonra (genellikle 30 saniye ila birkaç dakika), doğrulamanın gerçekleşmesi için Enter'a basın. Bu yöntem wildcard sertifikalar için gereklidir, ancak otomatik yenileme, DNS kaydının otomatik güncellenmesi için komut dosyası yazmayı gerektirir.
Otomatik Sertifika Yenileme Yapılandırması
Let's Encrypt sertifikaları yalnızca 90 gün geçerlidir, bu nedenle otomatik yenileme bir seçenek değil, bir zorunluluktur. Neyse ki Certbot, sertifikanın yenilenmesi gerekip gerekmediğini günde iki kez kontrol eden bir sistem zamanlayıcısı içerir. Etkin olduğundan emin olmak için aşağıdaki komutu çalıştırın:
sudo systemctl list-timers | grep certbot
Zamanlayıcı etkin değilse, aşağıdaki komutla etkinleştirin:
sudo systemctl enable --now certbot.timer
Yenileme sürecini manuel olarak test etmek için, her şeyin hatasız çalıştığından emin olmak amacıyla kuru çalıştırma modunu kullanın:
sudo certbot renew --dry-run
Bu komut mevcut sertifikada herhangi bir değişiklik yapmaz, yalnızca yenileme sürecini simüle eder. Çıktı Congratulations mesajını içeriyorsa, otomatik yenileme düzgün çalışacaktır.
Otomatik Yenilemede Yaygın Hata Çözümü
Otomatik yenilemedeki en yaygın sorunlardan biri Certbot failed to authenticate some domains hatasıdır. Bu hata genellikle aşağıdaki nedenlerden biriyle oluşur:
- Alan adının DNS kaydı değişmiş ve artık sunucunun IP adresini göstermiyor.
- Güvenlik duvarı 80 numaralı portu engelliyor.
- Web sunucusu yenileme sırasında erişilebilir değil.
Sorun giderme için önce curl -I http://example.com/.well-known/acme-challenge/test komutuyla doğrulama yolunun dışarıdan erişilebilir olduğunu kontrol edin. 404 yanıtı alırsanız, sorun web sunucusu yapılandırmasındadır.
Yaygın Doğrulama Hataları ve Çözümleri
Aşağıda, sertifika verme ve yenileme sürecinde en sık karşılaşılan üç hatayı inceleyeceğiz.
«Too Many Certificates Issued for Exact Set of Domains» Hatası
Bu hata, son bir saat içinde aynı alan adı için 5'ten fazla sertifika verme talebinde bulunduğunuz anlamına gelir. Let's Encrypt'in katı hız sınırları vardır. Çözüm, sınırın kalkmasını beklemek (genellikle bir saat) ve ardından talebi tekrarlamaktır. Bu hatayı önlemek için test amacıyla --dry-run komutunu kullanın ve gerçek talepleri yalnızca yapılandırma kesinleştiğinde yapın.
«Invalid Response From http://example.com/.well-known/acme-challenge/...» Hatası
Bu hata, Let's Encrypt'in doğrulama dosyasını sunucunuzdan alamadığını gösterir. En yaygın neden, HTTP'den HTTPS'ye 301 yönlendirmesinin olmasıdır. Certbot dosyayı HTTP üzerinden yerleştirir, ancak sunucu otomatik olarak HTTPS'ye yönlendirirse doğrulama başarısız olur. Bu sorunu çözmek için yönlendirmeyi geçici olarak devre dışı bırakın veya DNS yöntemini kullanın.
«DNS problem: NXDOMAIN looking up A for example.com» Hatası
Bu hata, alan adınızın A kaydının olmadığı veya yanlış IP adresini gösterdiği anlamına gelir. dig example.com A komutuyla kaydı kontrol edin. Çıktı boşsa, DNS panelinize kaydı ekleyin ve yayılmayı bekleyin. DNS yayılması genellikle 5 ila 30 dakika sürer, ancak bazı durumlarda 48 saate kadar uzayabilir.
Sertifika Yönetimi için Son İpuçları
Başarılı kurulumdan sonra, daha iyi bakım için birkaç ipucu:
- Sertifikalarınızı
/etc/letsencrypt/live/example.com/yolunda bulacaksınız.fullchain.pemdosyası tam sertifika zincirini içerir veprivkey.pemözel anahtarınızdır. - Özel anahtarı asla Git depolarına veya dosya paylaşım hizmetlerine koymayın.
- Sertifikanın son kullanma tarihini öğrenmek için
sudo certbot certificateskomutunu kullanın. - Web sunucunuzu değiştirirseniz (örneğin Nginx'ten Apache'ye), sertifikalar taşınabilir, ancak yenileme yapılandırmasını yeniden ayarlamanız gerekir.
Bu ipuçlarına uyarak ve Certbot kullanarak, artık sertifika süresinin dolması veya manuel hatalar konusunda endişelenmenize gerek kalmayacak. HTTPS bugün her web sitesi için zorunlu bir standarttır ve Certbot gibi otomatik araçlarla etkinleştirmek, sunucu yönetiminin en basit görevlerinden biri haline gelmiştir.