Kendi VDS'inizde bir site yayına aldıysanız sıradaki adım HTTPS. Let's Encrypt ücretsiz sertifika verir; Certbot ise bu sertifikayı alıp web sunucunuza kuran ve süresi dolmadan yenileyen araçtır. Sertifika ömürlerinin önümüzdeki yıllarda kısalacağını düşünürsek, yenilemesi otomatik bir kurulum artık tercih değil zorunluluk. Bu rehber Ubuntu üzerinde Nginx ve Apache için adım adım ilerliyor.
Snap kullanmak istemiyorsanız dağıtım paketleri de iş görür:
Apache:
Certbot sizden bir e-posta adresi ister, kullanım koşullarını onaylamanızı bekler ve ardından sunucu yapılandırmanızı günceller. HTTP isteklerini HTTPS'e yönlendirme seçeneğini de otomatik ekler.
Prova hatasız tamamlanıyorsa yenileme konusunda içiniz rahat olabilir. Yine de sertifika bitiş tarihini izleyen bir uyarı kurmak iyi bir alışkanlıktır.
İkinci komut sertifikayı kimin verdiğini ve geçerlilik tarihlerini gösterir.
Başka bir sağlayıcıdan da sertifika alıyorsanız onu da ayrı bir satır olarak eklemeyi unutmayın.
Artık kullanmadığınız bir sitenin sertifikasını kaldırmak isterseniz, önce web sunucusu yapılandırmasından ilgili satırları çıkarın, ardından sertifikayı silin:
Aynı sunucuda birden fazla site barındırıyorsanız her site için ayrı sertifika almak, bir sitenin alan adı değiştiğinde diğerlerini etkilemeden işlem yapmanızı sağlar.
Kurulumda takıldığınız bir adım olursa hata mesajıyla birlikte SSL Sertifikaları bölümünde konu açın. Siz Certbot mu, acme.sh mi kullanıyorsunuz?
Ön koşullar
- Alan adınızın A (ve varsa AAAA) kaydı sunucunuzun IP'sini göstermeli.
- Web sunucunuz alan adıyla HTTP (80) üzerinden yanıt veriyor olmalı.
- Güvenlik duvarında 80 ve 443 portları açık olmalı: sudo ufw allow 80,443/tcp
1. Certbot'u kurun
Certbot'un kendi belgeleri snap ile kurulumu öneriyor:
Bash:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Bash:
sudo apt install -y certbot python3-certbot-nginx # Nginx için
sudo apt install -y certbot python3-certbot-apache # Apache için
2. Sertifikayı alın ve kurun
Nginx:
Bash:
sudo certbot --nginx -d alanadiniz.com -d www.alanadiniz.com
Bash:
sudo certbot --apache -d alanadiniz.com -d www.alanadiniz.com
3. Otomatik yenilemeyi doğrulayın
Kurulum, yenilemeyi yapan bir systemd zamanlayıcısı ekler. Çalıştığını görmek ve yenilemeyi prova etmek için:
Bash:
systemctl list-timers | grep -i certbot
sudo certbot renew --dry-run
4. Kurulumu test edin
Bash:
curl -I https://alanadiniz.com
echo | openssl s_client -connect alanadiniz.com:443 -servername alanadiniz.com 2>/dev/null | openssl x509 -noout -issuer -dates
Wildcard sertifika gerekiyorsa
*.alanadiniz.com gibi wildcard sertifikalar yalnızca DNS doğrulamasıyla alınabilir. --manual seçeneğiyle elle TXT kaydı ekleyerek sertifika almak mümkün, ancak bu yöntem otomatik yenilenmez. DNS sağlayıcınız için bir Certbot eklentisi varsa (Cloudflare gibi pek çok sağlayıcının eklentisi bulunur) API anahtarıyla tam otomatik kurulum yapın.Cloudflare arkasındaki siteler
Site Cloudflare proxy'si arkasındaysa HTTP doğrulaması çoğu durumda sorunsuz çalışır. Cloudflare'de SSL modunu "Full (strict)" olarak ayarlayın; bu modda Cloudflare ile sunucunuz arasındaki bağlantı da geçerli bir sertifikayla şifrelenir. Alternatif olarak Cloudflare'in kendi Origin sertifikası da kullanılabilir.Ek güvenlik: CAA kaydı
CAA kaydı, alan adınız için hangi sertifika otoritelerinin sertifika verebileceğini belirtir:
Kod:
alanadiniz.com. CAA 0 issue "letsencrypt.org"
HSTS için acele etmeyin
HSTS başlığı tarayıcılara sitenize yalnızca HTTPS ile bağlanmalarını söyler. Faydalıdır ama tüm alt alan adlarınızın HTTPS'e hazır olduğundan emin olmadan uzun süreli bir HSTS politikası ya da preload listesine başvuru, geri alması zor sorunlara yol açabilir. Önce kısa bir max-age ile başlayın.Sertifikaları yönetmek
Sunucudaki tüm sertifikaları, kapsadıkları alan adlarını ve bitiş tarihlerini görmek için:
Bash:
sudo certbot certificates
Bash:
sudo certbot delete --cert-name alanadiniz.com
Sık karşılaşılan hatalar
- "Connection refused" / zaman aşımı: 80 portu kapalıdır ya da DNS kaydı başka bir IP'yi gösteriyordur.
- "Too many certificates already issued": Kısa sürede çok sayıda deneme yapıp oran sınırına takıldınız. Denemeler için --dry-run ya da test ortamını kullanın.
- Yenileme sonrası eski sertifika görünüyor: Web sunucusu yeniden yüklenmemiş olabilir; Certbot eklentileri bunu normalde otomatik yapar, elle kurulumlarda deploy hook ekleyin.
Kurulumda takıldığınız bir adım olursa hata mesajıyla birlikte SSL Sertifikaları bölümünde konu açın. Siz Certbot mu, acme.sh mi kullanıyorsunuz?