Let's Encrypt sertifikası kurulumunda 'Challenge failed' hatası alıyorum, nasıl çözerim?

0

Yeni kurduğum Ubuntu 22.04 LTS sunucuma nginx ile bir web sitesi kurdum ve Let's Encrypt kullanarak ssl sertifikası yüklemeye çalışıyorum. Certbot ile `sudo certbot --nginx` komutunu çalıştırdığımda sürekli olarak "Challenge failed for domain example.com" ve "The client lacks sufficient authorization :: The key authorization file is not reachable" benzeri hatalar alıyorum. DNS kayıtlarım doğru, A kaydı ve www kaydı sunucunun IP'sini gösteriyor ve `dig` ile kontrol ettiğimde doğru IP'ye çözümleniyor. Web sitesi HTTP üzerinden sorunsuz çalışıyor ve tarayıcıdan erişilebiliyor. Nginx yapılandırmasını kontrol ettim, 80 portu açık ve yönlendirme doğru görünüyor. `ufw` güvenlik duvarı üzerinde 80 ve 443 portlarını açtım. `systemctl status nginx` ile Nginx'in çalıştığını doğruladım. `.well-known/acme-challenge` dizinine erişim denemeleri de başarısız oluyor. hata loglarında da spesifik bir ipucu bulamadım. Bu sorunu nasıl çözebilirim, sertifika neden doğrulanamıyor ve siteme SSL ekleyemiyorum?

Cevaplar (2)

0

Bu Let's Encrypt işlerinde başıma çok geldi bu 'Challenge failed' denen illet. Bizim zamanımızda böyle otomatik işler yoktu, sertifika almak ayrı dertti ama en azından böyle saçma sapan hatalar vermezdi. Sen şimdi DNS'leri kontrol etmişsin, portları açmışsın, nginx çalışıyor diyorsun. Ama Certbot o dosyayı göremiyor işte. Bunu birkaç sebebi olabilir, en sık karşılaşılanları sen zaten yapmışsın ama gözden kaçan bir detay vardır.

Şimdi bak, Certbot'un bu .well-known/acme-challenge klasörüne erişememesinin bir nedeni de bazen Nginx'in kendisi olabiliyor. Hani sen --nginx ile çalıştırıyorsun ya, Certbot bazen Nginx'in mevcut konfigürasyonunu okuyup ona göre bir şeyler yapmaya çalışıyor. Ama eğer senin Nginx konfigürasyonunda, bu .well-known dizinine erişimi engelleyen veya başka bir yere yönlendiren bir ayar varsa, işte o zaman Certbot çuvallıyor. Hatta bazen bu, dosya izinlerinden de kaynaklanabilir. Certbot'un çalıştığı kullanıcı, o dizine yazma iznine sahip olmayabilir.

Şunu bir dene bakalım: Certbot'u --webroot seçeneğiyle kullanmayı dene. Bu, Nginx'in konfigürasyonunu değiştirmeye çalışmadan, doğrudan senin web sitesinin kök dizinini göstererek dosyayı bulmasını sağlar. Önce Certbot'u kaldırıp tekrar kurmayı düşünebilirsin, bazen eski ayarlar kalıyor. Sonra da şöyle bir komutla dene:

Sudo certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com

Burada /var/www/html senin web sitenin kök dizini olmalı, onu kendi sunucuna göre ayarla. -d ile de domainlerini belirtirsin. Bu şekilde Certbot doğrudan dosyanın olduğu yere bakacak ve erişim sorunu yaşanma ihtimali azalacak. Eğer bu da olmazsa, Nginx'in Access.log ve Error.log dosyalarını bir daha detaylı incele, bazen orada gözden kaçan küçük bir satır bile sorunun kaynağını gösterebilir. Bizim zamanımızda her şey elle yapılırdı, şimdi bu otomasyonlar da kendi içinde bir dert.