Let’s Encrypt ile ücretsiz SSL kurulumu

Let’s Encrypt mozilla, cisco başta olmak üzere bir çok teknoloji devinin desteklediği ücretsiz SSL sertifikası sağlayıcısıdır. Google başta olmak üzere sektör devleri internet üzerindeki tüm trafiğin şifreli ve böylece güvenli olmasını artık standart olarak talep etmeye başladı. Let’s Encrypt’den önce SSL sertifikası almak oldukça zor ve neredeyse sadece kurumsala hitap eden ücretli bir süreç iken artık bir kaç satır kod ile herkes sitesini daha güvenli ve günümüz koşullarına uygun hale getirebiliyor.

Bu yazımızda bir test adresi üzerine certbot kullanarak letsencrypt kuracağız. certbot ücretsiz ssl sertifikamızı almak için kullanacağımız EFF tarafından geliştirilen komut satırı uygulamasıdır. Bu sayede elle sertifika dosyası kopyalama ve sunucu yapılandırma  işlemlerini yapmamıza gerek kalmayacak

Öncelikle web sunucu olarak nginx kullanacağımız için gerekli yapılandırma dosyalarımızı /etc/nginx/sites-enabled dizininde oluşturalım:

nano /etc/nginx/sites-enabled/test.kodto.com

server {
  listen 80;
  root /var/www/test.kodto.com;
  index index.php index.html;
  server_name test.kodto.com;

  location / {
    try_files $uri $uri/ =404;
  }
}

Ardından mkdir /var/www/test.kodto.com ile yayın yapacağmız dizini oluşturalım ve içerisine test maksatlı herhangi bir index.html dosyası ekleyelim. Bunun için  komutunu kullanabiliriz. Yapılandırma dosyamızı da hazırladıktan sonra nginx -t ile kontrol edip service nginx restart ile sunucumuzu yeniden başlatarak yeni domainimizi dışarıdan gelecek isteklere açalım. Ardından test adresimize eriştiğimizde http üzerinden yayında olduğunu görebilmemiz gerekiyor. Şu aşamadan sonra Let’s Encrypt kurulumuna geçebiliriz. Öncelikle: sudo add-apt-repository ppa:certbot/certbot komutu ile certbot için gerekli olan eff paket deposunu sunucumuza ekliyoruz. Ardından: sudo apt-get update &&  sudo apt-get install python-certbot-nginx -y komutu ile certbot kurulumunu yapıyoruz. Artık ssl sertifikamızı alabileceğimiz certbot aracı sisteminize kurulmuş durumda. Alttaki tek satırlık komutla ssl sertifikamızın temin edilip nginx sunucumuza kurulmasını sağlayabiliriz: sudo certbot –nginx -d test.kodto.com Eğer birden fazla domain, subdomain için sertifika oluşturacaksak -d parametresiyle bunları da vermemiz gerekiyor, örneğin: sudo certbot –nginx -d wptests2.fikir.pw Ardından kurulum işlemini sorulan sorulara yanıt vererek tamamlıyoruz. Önemli noktalardan biri otomatik kurulum için sorulan soruya evet yanıtı vermek:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for test.kodto.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/test.kodto.com

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Bu aşamada http isteklerini https ye yönlendirmek istersek 2 numaralı seçeneği tercih etmemiz gerekiyor. Kopya içerik gibi sorunlarla uğraşmamak adına bunu tercih etmek daha mantıklı olacaktır. Ardından kurulumun tamamlandığına dair mesaj karşımıza çıkıyor:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://test.kodto.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=test.kodto.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/test.kodto.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/test.kodto.com/privkey.pem
Your cert will expire on 2018-11-15. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Certbot bizim için ücretsiz ssl sertifikasını aldı ve nginx sunumuza kurdu ve nginx i yeniden başlatarak trafiğimizi https protokolüne uygun hale getirdi. Test adresimize tekrar baktığımızda ssl ikonunu göreceğiz:

Detaylara baktığımızda sağlayıcının Let’s Encrypt olduğunu görüyoruz:

Sertifikalarımızı yenilemek için certbot renew komutunu çalıştırabiliriz. Bunun için crontab -e ile aşağıdaki gibi bir cron tanımlamak yararlı olacaktır.
crontab -e ile cronjob ayar dosyamıza giriyoruz ve sonuna aşağıdaki görevi ekliyoruz:

0 0 * * * certbot renew --post-hook "service nginx restart"

Bu şekilde her gün gece yarısı süresi azalmış sertifikalarımız yenilenecek ve web sunucumuz bunların aktif olması için yeniden başlatılacaktır. Daha detaylı işlemler için ise certbot certonly komutunu kullanabiliriz.

Kaynaklar:

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir