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
vewww.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.