Yaygın Let’s Encrypt/Certbot Hataları Nasıl Düzeltilir

Bir Linux sunucu yöneticisiyseniz, Let’s Encrypt’in etki alanı tarafından doğrulanmış TLS sertifikaları veren ücretsiz, otomatik ve açık bir sertifika yetkilisi (CA) olduğunu muhtemelen biliyorsunuzdur, böylece web sitenizde veya web uygulamanızda HTTPS’yi tek kuruş harcamadan etkinleştirebilirsiniz. .

Ancak Linux dünyasındaki pek çok şeyde olduğu gibi, beklenmeyen hatalar meydana gelebilir ve bu makale, bunların nasıl düzeltileceğine dair bazı ipuçlarını paylaşacaktır.

1. Certbot’un En Son Sürümünü Kullanın

Her zaman Certbot’un en son sürümünü kullanmanız önerilir. Bir hata oluştuğunda, sorunu hızlı bir şekilde belirlemenize yardımcı olan daha ayrıntılı hata mesajları üretir. Bazen bir hata, yalnızca Certbot’un en son sürümünü yükleyerek düzeltilebilir.

En son sürümü yüklemek için Snap’i kullanabilirsiniz.

sudo snap install certbot --classic

Ardından, varsayılan /usr/bin/certbot ikili dosyası yerine /snap/bin/certbot ikili dosyasını kullanın.

sudo /snap/bin/certbot --webroot --agree-tos --redirect --hsts --staple-ocsp -d example.com

Ayrıca aşağıdaki komutla sembolik bir bağlantı da oluşturabilirsiniz, böylece terminal penceresine certbot yazdığınızda otomatik olarak Snap sürümünü kullanır.

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

2. Webroot Eklentisini Kullanın

TLS sertifikaları almak için apache veya nginx eklentisi yerine webroot eklentisini kullanabilirsiniz. Daha kararlı ve daha az hataya açık görünmektedir.

Yani bu komutu çalıştırmak yerine:

sudo /snap/bin/certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d example.com

Şu komutu kullanabilirsiniz

sudo /snap/bin/certbot --webroot --agree-tos --redirect --hsts --staple-ocsp -d example.com -w /var/www/html

-w parametresi, web sitenizin/web uygulamanızın webroot dizinini belirtir. Yukarıdaki örnekte, /var/www/html/ kullanıyorum. Tam konumu web sunucusu yapılandırma dosyanızda bulabilirsiniz.

Apache’de şöyle bir satır bulmalısınız:

DocumentRoot "/var/www/nextcloud"

Nginx’te şöyle bir satır bulmalısınız:

root /var/www/nextcloud/;

3. Bağlantı sırasında zaman aşımı (muhtemelen güvenlik duvarı sorunu)

Bazı kişiler şöyle bir hatayla karşılaşabilir:

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: mail.example.com
   Type:   connection
   Detail: Fetching
   http://mail.example.com/.well-known/acme-challenge/8aNsZkYzpbFXyWUAECaJEj1eBsVhPOokDYeNTgw4nq8:
   Timeout during connect (likely firewall problem)

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.
Can't open /etc/letsencrypt/renewal/mail.example.com.conf: No such file or directory.

Şu sorunlar olabilir:

  • DNS A kaydınız yanlış. mail.example.com için yanlış IP adresi mi girdiniz? Lütfen DNS A kaydına özel bir IP adresi girmeyin. Genel bir IP adresi kullanmalısınız.
  • DNS kaydınız henüz yayılmadı. Yayılıp yayılmadığını kontrol etmek için https://dnsmap.io adresine gidin.
  • Güvenlik duvarında 80 ve 443 numaralı TCP bağlantı noktalarını açmadınız. Certbot HTTP-01 sorgulamasının belirli bir web sayfasına erişmesi gerekiyor, bu nedenle bu iki bağlantı noktasını açmalısınız.

4. Nginx Yapılandırmaları Etkinleşmiyor

Bazı kişiler bu hatayla karşılaşabilir:

Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet.

Bu, sanal konak dosyanızın Nginx’te yüklenmediği anlamına gelir. Nginx’i yeniden başlatmalısınız.

sudo systemctl restart nginx

Bazen Nginx yapılandırma dosyanızda bir hata olabilir. Test etmek için aşağıdaki komutu çalıştırın.

sudo nginx -t

Ayrıca, Nginx günlük günlüğünü de kontrol edin.

sudo journalctl -eu nginx

Nginx yapılandırma dosyama bir server_name yönergesi eklemeyi unuttuğum için yukarıdaki hatayla bir kez karşılaştım, bu nedenle Nginx, Certbot isteği için hangi yapılandırma dosyasının kullanılacağını bilmiyor.

5. Unauthorized (404 not found)

Örnek hata mesajı:

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: onlyoffice.linuxbabe.com
   Type:   unauthorized
   Detail: 2606:4700:20::681a:c47: Invalid response from
   https://onlyoffice.linuxbabe.com/.well-known/acme-challenge/piqJOZM3CYsCGAmT-ZdfKI2XrvteQQEyKgtIHM6DNo4:
   526

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.

Genellikle bu hatanın neden oluştuğunu web sunucunuzun hata günlüğünü kontrol ederek öğrenebilirsiniz. Örneğin, OnlyOffice çevrimiçi ofis paketi için TLS sertifikası almaya çalışırken bu hatayla karşılaşıldı. Nginx web sunucusu hata günlüğünde aşağıdaki satırlar bulunur.

022/12/01 04:53:23 [error] 26124#26124: *14 open() "/var/www/onlyoffice/documentserver/letsencrypt/.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA" failed (2: No such file or directory), client: 127.0.0.1, server: webmail.sk8deal.com, request: "GET /.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA HTTP/1.1", host: "onlyoffice.linuxbabe.com", referrer: "http://onlyoffice.linuxbabe.com/.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA"

Bu yüzden Let’s Encrypt ACME protokolü için bir dizin oluşturmak gerekiyor.

sudo mkdir -p /var/www/onlyoffice/documentserver/letsencrypt/.well-known/acme-challenge/

Sahibini www-data olarak değiştirin.

sudo chown www-data:www-data /var/www/onlyoffice/documentserver/letsencrypt/ -R

www-data kullanıcısı olarak bir dosya oluşturmaya çalışın.

sudo -u www-data touch /var/www/onlyoffice/documentserver/letsencrypt/.well-known/acme-challenge/uhV7Py-ruxoDSkY_BcZwiifQ1L_Pli6pMK0wvInNiLA

Başarılı olursa TLS sertifikası almak için certbot’u tekrar çalıştırabilirsiniz. Bir “izin reddedildi” hatası görürseniz, www-data kullanıcısına izin vermeniz gerekir.

sudo apt install acl
sudo setfacl -R -m u:www-data:rxx /var/www/onlyoffice/

6. Dry Run

Belirli bir süre içinde Let’s Encrypt TLS sertifikasını almak için çok fazla başarısız girişim olursa, Let’s Encrypt CA sunucusuna daha fazla istekte bulunmanız büyük olasılıkla reddedilecektir. Bunun olmasını önlemek için test için –dry-run parametresini kullanabilirsiniz.

Örneğin:

sudo /snap/bin/certbot certonly --dry-run --webroot --agree-tos --redirect --hsts --staple-ocsp -d example.com -w /var/www/html

Deneme çalıştırması yalnızca kesinlikle alt komutla çalışır, bu nedenle bunları birlikte kullanmalısınız. Hatayı düzelttikten ve prova başarılı olduktan sonra TLS sertifikası alabilirsiniz.

sudo /snap/bin/certbot --webroot --agree-tos --redirect --hsts --staple-ocsp -d example.com -w /var/www/html

Yazının orijinalini buradan okuyabilirsiniz.