İçindekiler
On yıl önce bir SSL sertifikası almak para, form doldurmak ve e-posta beklemek demekti. Let's Encrypt bunu bir komuta indirdi. Bugün web trafiğinin büyük çoğunluğu HTTPS üzerinden akıyor ve bunda Let's Encrypt'in payı çok büyük.
Bu kolaylığın bir bedeli var: Sertifikalar kısa ömürlü. Geleneksel olarak 90 gün geçerliydiler ve sektör, sertifika ömürlerini önümüzdeki yıllarda daha da kısaltma yönünde ilerliyor. Yani yenileme mutlaka otomatik olmalı.
Nasıl çalışır?
Let's Encrypt size bir sertifika vermeden önce alan adının gerçekten sizin kontrolünüzde olduğunu doğrular. Bunun iki yaygın yolu vardır:
- HTTP-01: Certbot, sitenizde
/.well-known/acme-challenge/altına geçici bir dosya koyar. Let's Encrypt de bu dosyayı internetten okumaya çalışır. Bunun için 80 numaralı portun açık olması ve alan adının bu sunucuyu göstermesi gerekir. - DNS-01: Alan adınıza
_acme-challengeadında bir TXT kaydı eklenir. Joker (wildcard) sertifika (*.ornek.com) yalnızca bu yöntemle alınabilir.
Kurulum (Apache örneği)
dnf install certbot python3-certbot-apache # RHEL / AlmaLinux
apt install certbot python3-certbot-apache # Debian / Ubuntu
certbot --apache -d ornek.com -d www.ornek.com
Nginx kullanıyorsanız python3-certbot-nginx paketi ve --nginx parametresi aynı işi görür. Certbot sertifikayı alır, web sunucusu yapılandırmasını günceller ve isterseniz HTTP'den HTTPS'e yönlendirmeyi de ekler.
Web sunucusu ayarlarına dokunulmasını istemiyorsanız certonly --webroot kullanabilirsiniz:
certbot certonly --webroot -w /var/www/ornek -d ornek.com -d www.ornek.com
Otomatik yenileme
Paketle kurulan certbot genellikle günde iki kez çalışan bir systemd zamanlayıcısı (ya da cron görevi) ekler. Kontrol edin:
systemctl list-timers | grep certbot
Yenilemenin gerçekten çalışacağını görmek için bir deneme yapın:
certbot renew --dry-run
Bu komut hata vermiyorsa yenileme büyük ihtimalle sorunsuz çalışacaktır.
Yenilenen sertifikayı web sunucusunun yeniden yüklemesi gerekir. Certbot'un Apache ve Nginx eklentileri bunu kendisi yapar. certonly kullandıysanız bir "deploy hook" ekleyin:
certbot renew --deploy-hook "systemctl reload httpd"
Sık karşılaşılan hatalar
"Timeout during connect" ya da "Connection refused"
Let's Encrypt sunucunuzun 80 portuna ulaşamıyor. Güvenlik duvarına bakın (firewall-cmd --list-all ya da ufw status). Bazı bulut sağlayıcılarında ayrıca bir "security group" ayarı olur.
"Invalid response from …/.well-known/acme-challenge/…: 404"
Doğrulama dosyası okunamıyor. Sebebi genellikle şunlardan biridir: alan adının başka bir sunucuyu göstermesi, .htaccess içindeki bir yönlendirme kuralının bu klasörü de yönlendirmesi ya da CDN'in isteği kendi tarafında karşılaması.
"too many certificates already issued"
Let's Encrypt'in alan adı başına haftalık sertifika sınırı vardır. Bir betiği denerken sürekli yeni sertifika isteyip bu sınıra takılmak kolaydır. Denemeleri her zaman --staging ya da --dry-run ile yapın.
www çalışıyor, kök alan çalışmıyor (ya da tersi)
Sertifikada iki ad da olmalı: -d ornek.com -d www.ornek.com. Hangi adların sertifikada olduğunu görmek için:
certbot certificates
Sertifika yenilendi ama tarayıcı hâlâ eskisini gösteriyor
Web sunucusu yeniden yüklenmemiştir. Yukarıdaki deploy hook'u ekleyin.
Süreyi dışarıdan izleyin
Yenilemenin bozulduğunu en geç fark eden kişi siz olmamalısınız. Sertifikanın kalan süresini dışarıdan şöyle kontrol edebilirsiniz:
echo | openssl s_client -servername ornek.com -connect ornek.com:443 2>/dev/null | openssl x509 -noout -enddate
Bu komutu bir izleme betiğine koyun ve kalan süre 14 günün altına düşerse e-posta gönderin. Bu kadar basit bir kontrol, "site neden güvenli değil diyor?" telefonlarının neredeyse hepsini önler.
Yorumlar
Henüz yorum yok. İlk yorumu siz yazın.