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.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.