SSL sertifikaları, web sitenizin güvenliği için olmazsa olmazdır. Özellikle Let's Encrypt gibi ücretsiz sertifika otoriteleri sayesinde herkes kolayca HTTPS’e geçebiliyor. İşte bu noktada acme.sh, tamamen shell üzerinde çalışan, hızlı ve esnek bir ACME istemcisi olarak öne çıkıyor. Bu yazıda acme.sh’in kurulumundan sertifika yönetimine kadar her şeyi anlatacağım.
acme.sh Nedir ve Neden Tercih Edilmeli?
acme.sh, Let's Encrypt ve diğer ACME uyumlu sertifika otoriteleriyle çalışan, bash tabanlı bir istemcidir. Rakibi Certbot’a göre daha hafif, bağımlılığı az ve özellikle wildcard sertifikaları için DNS doğrulamasını çok kolaylaştırır. Ayrıca cron ile otomatik yenileme, çoklu domain desteği ve 90’dan fazla DNS API entegrasyonu sunar.
Kurulumu tek satır: curl https://get.acme.sh | sh
Bu komut, acme.sh’i home dizininize kurar ve gerekli alias’ları ekler. Kurulumdan sonra terminali yeniden başlatın veya source ~/.bashrc ile alias’ı aktif edin.
Sertifika Alma: Webroot ve Standalone Yöntemleri
En yaygın kullanım, webroot yöntemidir. Web sitenizin dosya yolunu belirterek doğrulama yaparsınız. Örneğin Apache veya Nginx kullanıyorsanız:
acme.sh --issue -d ornek.com -w /var/www/htmlEğer web sunucunuz kapalıysa standalone mod kullanabilirsiniz (geçici olarak 80. portu açar):
acme.sh --issue -d ornek.com --standaloneTabii port 80’in açık olduğundan emin olun. Bu yöntem özellikle geliştirme ortamlarında işe yarar.
Wildcard Sertifikaları ve DNS Doğrulaması
Wildcard (joker) sertifikalar, *.ornek.com şeklinde tüm alt alan adlarını kapsar. Bunun için DNS doğrulaması gerekir. acme.sh, Cloudflare, DigitalOcean, Godaddy gibi popüler DNS sağlayıcılarıyla doğrudan entegre çalışır. Örneğin Cloudflare için API token’ınızı ayarlayıp şu komutu kullanabilirsiniz:
export CF_Token="sizin_tokeniniz" acme.sh --issue -d '*.ornek.com' --dns dns_cfBu yöntemle sunucunuzda 80. portu açmanıza gerek kalmaz. Sadece DNS kaydını API üzerinden ekler. İşlem tamamlandıktan sonra kayıt otomatik silinir.
Sertifikaları Kurulum ve Yenileme
acme.sh sertifikaları ~/.acme.sh/ dizininde saklar. Bunları web sunucunuza kopyalamak için --install-cert parametresini kullanabilirsiniz. Örneğin Nginx için:
acme.sh --install-cert -d ornek.com \ --key-file /etc/nginx/ssl/key.pem \ --fullchain-file /etc/nginx/ssl/cert.pem \ --reloadcmd "nginx -s reload"Yenileme işlemi otomatiktir. acme.sh, cron’a bir görev ekler ve sertifikanın süresi dolmadan 60 gün kala yeniler. Yine de manuel olarak test etmek isterseniz:
acme.sh --renew -d ornek.com --forceGüvenlik İpuçları ve Sık Yapılan Hatalar
- API anahtarlarınızı güvende tutun. Özellikle DNS API’leri için kullandığınız token’ları environment variable olarak ayarlayın, script içine yazmayın.
- Firewall ayarlarını kontrol edin. Standalone mod kullanıyorsanız 80. portun erişilebilir olduğundan emin olun.
- Rate limit’e dikkat. Let's Encrypt haftada 50 sertifika limiti uygular. Gereksiz yere yenileme yapmayın.
- Yedekleme. ~/.acme.sh klasörünü yedekleyin. Sertifikalarınızı ve hesap bilgilerinizi kaybetmeyin.
En sık karşılaşılan hata, “Domain not found” veya “Invalid response”tır. Bunun için DNS kayıtlarınızın doğru yayıldığından emin olun. Ayrıca webroot yolunu yanlış belirtmek de sık görülen bir hatadır.
Sonuç
acme.sh, SSL sertifikası yönetimini son derece basitleştiriyor. Özellikle DNS API entegrasyonu sayesinde wildcard sertifikaları almak çocuk oyuncağı. Script yapısı sayesinde sunucu kaynaklarını minimum tüketiyor. Siz de hemen deneyin, web sitenizi ücretsiz ve güvenli hale getirin. Unutmayın, HTTPS artık bir lüks değil, zorunluluk.