Certbot İle Let’s Encrypt SSL Sertifika İşlemleri
Bir önceki, Let’s Encrypt – SSL/TLS Sertifikası başlıklı yazı bahsi geçmiş olan, Let’s Encrypt sertifikası oluşturma sürecinde kullanabileceğimiz 2 önerilen araçla devam edelim.
Bu araçlardan ilki komut satırı arayüzü üzerinden kullanabileceğimiz ve pek çok işlemi kolaylıkla yönetebilmemizi sağlayan Certbot.
Certbot
Certbot, HTTPS bağlantılar için otomatik bir şekilde Let’s Encrypt sertifikaları oluşturmayı ve yönetmeyi sağlayan ücretsiz, açık kaynaklı yazılım aracı. certbot.eff.org üzerinden detaylarına ulaşılabilecek araç Electronic Frontier Foundation (EFF) tarafından geliştirilmektedir.
Pek çok barındırma sağlayıcısı (hosting provider), HTTPS’yi etkinleştirmek için dahili araçlara sahiptir. Hosting providers1 sayfasından ilgili listeyi görüntüleyebilirsiniz. Peki, Certbot hangi durumlarda tercih edilebilir?
- Komut satırı arayüzüne ve kullanımına aşina iseniz,
- Yayın olan bir HTTP websiteniz varsa ve 80. portu açık ise,
- Web sitesini dedicated server, virtual private server ya da cloud-hosted server üzerinde yayınlıyor, SSH bağlantısı ile bağlantı sağlanabiliyor ve sudo ile yönetebiliyorsanız.
Eğer, Certbot kullanmaya karar vermişseniz kurulum için Certbot Instructions2 sayfasındaki özelleştirme talimatlarını takip edebilirsiniz.
Unutmadan, Certbot her 60 günde bir sertifikaları yeniler ve ayrıca eklentilerle3 farklı servisler / platformlar için de çeşitli ek özellikler sunar.
whynopadlock.com, check-your-website.server-daten.de, Let’s Debug ve SSL Labs sertifika kontrolü yapabilirsiniz.
Certbot Kurulumu
Get Certbot sayfasında farklı işletim sistemleri ve özelleştirme seçeneklerine uygun olarak hazırlanmış indirme yönergelerini görüntüleyebilirsiniz. Burada yer alan seçenekler arasından, Homebrew ile olan adımlarla ilerleyelim. Bu sayede, sertifika işlemlemlerini bilgisayar üzerinden manuel olarak yürütmek mümkün.
brew install certbot
Komutun uygulanmasının ardından kısa bir süre içerisinde uygulama indirilmiş ve yapılandırılmış olacaktır. Emin olmak adına bir test işlemi gerçekleştirelim.
certbot --version
Herhangi bir hata mesajı dönmemişse bir sonraki adıma geçebiliriz. Certbot işlemlerinde root yetkisi gerekmekte. Dolayısıyla, komutları sudo
ile işleme almamız ve şifre ile doğrulamalıyız. Ardından, /usr/local/bin/certbot
için 0755 tanımlamamızı yapabiliriz.
sudo chown root /usr/local/bin/certbot
chmod 0755 /usr/local/bin/certbot
/usr/local/bin/certbot --version
Sunucu üzerinden işlemler yürütmek için (örn. digitalocean) aşağıdaki adımlar izlenebilir.
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
#apache için
sudo apt-get install certbot python-certbot-apache
sudo certbot --apache
#nginx için
sudo apt-get install certbot python-certbot-nginx
sudo certbot --nginx
certbot --version
Certbot Kullanımı
Certbot sertifika alma, yenileme veya iptal etme gibi belirli eylemler için komutlar ve alt komutlar kullanmaktadır. Aşağıda, öne çıkan ve sıklıkla kullanılan komutlardan bazılarını görebilirsiniz. User Guide sayfasından diğer komutları görüntüleyebilirsiniz. Tabi, her zaman olduğu gibi -help
flag’i ile araç detaylarına ulaşabiliriz.
certbot --help
O halde, örnek işlemlere başlayabiliriz. İlk örneğimizde nasıl yeni bir sertifika oluşturabileceğimize bakalım.
certbot certonly -d alanadi.com --nginx|apache|standalone|webroot
Aynı işlemi birden fazla alan adı için de (elbette flag’leri de dahil ederek) gerçekleştirebiliriz.
certbot certonly --cert-name alanadi.com -d alanadi.org,www.alanadi.org
Diğer yandan, var olan ve bir alan adı ile ilişkilendirmiş bir sertifikayı farklı alan adları için de tanımlayabiliriz.
certbot --expand -d alanadi.com,yenialanadi.com,farklialanadi.com
Oluşturulmuş sertifikaları görüntülemek için ise certificates
komutunu kullanabiliriz.
certbot certificates
Peki, var olan bir sertifikayı yenilemek istediğimizde ne yapmalıyız?
certbot renew
Bu komut ile uygun olan tüm sertifikalar yenilenecektir. Tek bir alan adı üzerinden işlem yapmak istersek komutu şu şekilde yeniden ele alabiliriz.
certbot renew --cert-name www.alanadi.com --nginx
Ek olarak, sertifika yenileme işlemi öncesinde veya sonrasında belirli bir işlemin gerçekleştirilmesini (örneğin sunucunun durdurulması ve işlem sonunda başlatılması) isteyebiliriz.
certbot renew --cert-name www.alanadi.com --nginx --pre-hook "service nginx stop" --post-hook "service nginx start"
Şimdiye kadar sertifikalarımızı oluşturduk, görüntüledik ve yeniledik. Peki, bir sertifikayı nasıl silebiliriz?
certbot delete --cert-name alanadi.com
Evet, sıklıkla kullanılan komutlardan bir kaçına mümkün olabilecek ihtiyaçlar çerçevesinde yer vermeye çalıştım. Son bir not olarak, bir sertifika oluşturulduğunda ve/veya yenilendiğinde certbot ilgili işlemi cronjob olarak tanımlar ve sertifikayı yenileme komutunu aşağıdaki alanlardan birine yüklenir.
/etc/crontab/
/etc/cron.\*/\*
systemctl list-timers
Yukarıdaki işlemlere ek diğer detaylar için User Guide, certbot API‘si için de ilgili dokümantasyonu tekrar not olarak düşmüş olayım.
İleri Okumalar
- How do I generate the Let’s Encrypt certificate and key on my own device?
- Generate Wildcard SSL certificate using Let’s Encrypt/Certbot
- How to Set Up Free SSL certificates with Let’s Encrypt and Apache
- Super-fast Secure WordPress Install on DigitalOcean with NGINX, PHP7, and Ubuntu 16.04 LTS
- Installing letsencrypt.org SSL Certificates on NGINX in 5 minutes or less
- Getting started with Let’s Encrypt!
- Install Let’s Encrypt to Create SSL Certificates