Merhaba dostlar! Daha önce CentOS 8 için Let’s Encrypt kurulumu yayınlamıştım. Şimdi benzer işlemi Ubuntu 20.04 sunucu üzerinde yapacağız.

Bu kılavuzun doğru uygulanabilmesi için ihtiyacınız olacaklar:

  • İşlem yapacağınız sunucu üzerinde, sudo yetkilerine sahip ve root olmayan normal bir kullanıcı hesabı.
  • Bir adet alan adı. Bu kılavuzda örnek olarak example.com alan adını kullanacağız.
  • example.com ve www.example.com alan adının A kaydı ile sunucu IP adresinize yönlendirilmesi tamamlanmış olmalıdır.
  • Nginx server blokları tanımlanmış olmalıdır. Henüz blok kurulumu yapmadıysanız, Ubuntu için LEMP sayfasına bakın
  • Kullanacağımız sunucu block yapısı: /etc/nginx/sites-available/example.com şeklinde olacak.

Certbot Kurulumu

Let’s Encrypt SSL sertifikası almak için ilk adım, Certbot yazılımı ve bağımlılıklarını sunucuya yüklemektir. Standart komut dizimi ile başlıyoruz. Onay istediğinde “evet” diyerek devam edin.

sudo apt install certbot python3-certbot-nginx

Certbot artık kullanıma hazır, ancak Nginx’in SSL’i otomatik olarak yapılandırması için, nginx’te bazı ayarlar yapmamız gerekiyor.

Nginx Ayarları

Certbot’un ssl ayarlarını otomatik yapabilmesi ve sorunsuz çalışması için, nginx ayarlarında geçerli sunucu bloğunu bulması gereklidir. Program, bunun için ilk olarak alan adınızla uyuşması gereken server_name direktifini kontrol eder.

Ubuntu 20.04 için LEMP kurulumunu sorunsuz tamamladıysanız, elinizde hazır biçimde /etc/nginx/sites-available/example.com bloğu ve server_name direktifi olmalıdır.

Kontrol için alan adının konfigürasyon dosyasını açın:

sudo nano /etc/nginx/sites-available/example.com

Dosya içeriğinde server_name ile başlayan satırı bulun.

Örnek görünümü alttaki gibidir.

...
server_name example.com www.example.com;
...

Ayarda sorun yoksa değişiklik yapmadan çıkın. Farklı ise yukarıdaki gibi düzeltin ve kaydedin. Doğru yazdığınızdan emin olmak için alttaki komut ile yazım kontrolü yapabilirsiniz. Hata varsa düzeltin ve yeniden kontrol edin.

sudo nginx -t

Her şey yolunda ise, nginx ayarlarını yeniden yükleyebiliriz:

sudo systemctl reload nginx

Certbot artık geçerli sunucu bloğunu bulabilir ve ssl ayarlarını otomatik olarak yapabilir.

Firewall HTTPS Ayarları

Ubuntu ve diğer dağıtımlar içinde kuşkusuz ufw en çok tercih edilen firewall durumunda. Kullanımı kolay, özelleştirilebilir ve genişletilebilir yapısı sayesinde son zamanlarda çok popüler hale geldi. Henüz sunucuda kurulu değilse, hemen kurmanızı öneriyorum. Kurulum sonrasında bazı nginx profilleri otomatik olarak tanımlanıyor.

Firewall durum kontrolü için:

sudo ufw status

Standart kurulumda sadece HTTP trafiğine izin verildiğini görebilirsiniz.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Varsayılan profili iptal edip tam HTTPS trafiğine izin vermek için alttaki komutları yürütün:

sudo ufw allow 'Nginx Full'
sudo ufw delete 'Nginx HTTP'

Yeni firewall durumuna bakalım:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

Harika! Artık Certbot kullanarak ssl sertifikamızı alabiliriz.

SSL Sertifikası Alma

Certbot, SSL sertifikası alma işini eklentiler aracılığıyla yapıyor. Biz sunucumuzda nginx yüklü olduğu için nginx eklentisi kullanacağız. Bu eklenti, nginx’i yeniden yapılandırmak ve gerektiğinde yapılandırmayı yeniden yükleme işini otomatik yapacaktır.

Şimdi kurulumu yapalım:

sudo certbot --nginx -d example.com -d www.example.com

Bu komut ile certbot belirttiğimiz alan adı için sertifika isteğinde bulunacaktır. Komutu ilk kez çalıştırdıysanız certbot sizden geçerli bir email adresi isteyecektir. Kullanıcı sözleşmesini de onaylamanız gerekiyor. İkisini de tamamladığınızda, certbot Let’s Encrypt sunucusundan alan adınız için bir sertifika talep edecek.

Sertifika sorunsuz alındıktan sonra, certbot tüm trafiği HTTPS olarak yönlendirmek isteyip istemediğinizi soracak. Bu adımda kesinlikle 2 numaralı seçeneği seçin ve yönlendirmeyi tamamlayın.

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):

Son olarak bilgilendirme mesajları göreceksiniz. Sertifika dosyalarının nerede depolandığı ve nasıl güncelleme yapılacağı gibi bilgiler veriliyor:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-08-18. 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

SSL sertifikanız sunucuya başarıyla kuruldu. Artık web sayfanızı her çağırdığınızda tarayıcınızda sorunsuz biçimde padlock simgesini göreceksiniz. Sunucuyu test etmek isterseniz eğer, size SSL Labs web sitesini öneriyorum.

SSL Otomatik Güncelleme Kontrolü

Let’s Encrypt sertifikaları sadece 90 gün için geçerlidir ve süresi bitmeden uzatılmalıdır. Bu adımda ekstra bir işlem yapmamız gerekmiyor çünkü certbot sertifika uzatma işleminin otomatik olarak yapılması için hazırda bir systemd timer kurmuş durumda. Biz sadece servisin doğru çalıştığından emin olacağız.

Kontrol için:

sudo systemctl status certbot.timer
● certbot.timer - Run certbot twice daily
     Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
    Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
   Triggers: ● certbot.service

Timer servisi sorunsuz yüklenmiş. Şimdi çalıştığından emin olalım:

sudo certbot renew --dry-run

Herhangi bir hata görmezseniz, güncelleme yazılımı sorunsuz çalışıyor demektir. Eğer güncelleme yazılımında bir arıza meydana gelirse, Let’s Encrypt size sertifika sürenizin bitmeye yaklaştığını bildiren eposta gönderecektir.