NginxUbuntu

Ubuntu ve Nginx için Let’s Encrypt ile Ücretsiz SSL

Ubuntu’da Nginx için Let’s Encrypt ile Ücretsiz SSL

Ubuntu Nginx Lets Encrypt
Ubuntu Nginx Lets Encrypt

Açıklama:

Let’s Encrypt, ücretsiz SSL / TLS sertifikalarını edinmenin ve yüklemenin kolay bir yolunu sağlayan ve böylece web sunucularında şifreli HTTPS’yi etkinleştiren bir Sertifika Otoritesidir (CA). Gerekli adımların çoğunu (hepsi değilse de) otomatikleştirmeye çalışan bir yazılım istemcisi olan Certbot, süreci basitleştirir. Şu anda, bir sertifika alma ve yükleme sürecinin tamamı hem Apache hem de Nginx’te tamamen otomatiktir.

Bu yazıda, Certbot’u Ubuntu 20.04’te  ücretsiz bir SSL sertifikası almak için kullanacağız ve sertifikamızı otomatik olarak yenilenecek şekilde ayarlayacağız.

Varsayılan dosya yerine ayrı bir Nginx sunucusu yapılandırma dosyası kullanılacaktır. Her etki alanı için yeni Nginx sunucusu blok dosyaları oluşturmanızı öneririm çünkü yaygın hatalardan kaçınmaya yardımcı olur ve varsayılan dosyaları bir yedek yapılandırma dosyası olarak korur.

 

Önkoşullar:

Sudo etkin ve root olmayan kullanıcı ve bir güvenlik duvarı dahil olmak üzere Ubuntu 20.04 sunucusu kuruldu.
Kayıtlı bir alan adı. Bu eğitim boyunca ornek.com’u kullanacağız. Namecheap’ten bir alan adı satın alabilir, Freenom ile ücretsiz bir alan adı edinebilir veya tercih ettiğiniz alan adı kayıt şirketini kullanabilirsiniz.
Aşağıdaki DNS kayıtlarının her ikisi de sunucumuz için ayarlandı.

ornek.com’un sunucunuzun genel IP adresini işaret ettiği bir A kaydı.
Sunucunuzun genel IP adresini gösteren www.ornek.com’un bulunduğu bir A kaydı.

Etki alanınız için bir sunucu bloğunuz olduğundan emin olun. Bu eğitici örnek olarak /etc/nginx/sites-available/ornek.com’u kullanacaktır.

 

Yapılandırma:

Adım 1 – Certbot’u Kurmak

Bir SSL sertifikası almak için Let’s Encrypt’i kullanmanın ilk adımı, Certbot yazılımını sunucunuza yüklemektir.

Apt ile Certbot’u ve Nginx eklentisini yüklüyoruz:

sudo apt install certbot python3-certbot-nginx

 

Certbot artık kullanıma hazır, ancak Nginx SSL’yi otomatik olarak yapılandırması için, Nginx’in bazı yapılandırmalarını doğrulamamız gerekiyor.

 

Adım 2 – Nginx’in Yapılandırmasını Onaylama

Certbot’un SSL’i otomatik olarak yapılandırabilmesi için Nginx, yapılandırmanızda doğru sunucu bloğunu bulabilmesi gerekir. Bunu özellikle, sertifika talep ettiğiniz etki alanıyla eşleşen bir server_name yönergesini arayarak yapar.

Nginx kurulum öğreticisindeki sunucu bloğu kurulum adımını takip ettiyseniz, /etc/nginx/sites-available/ornek.com adresinde alanınız için server_name yönergesi zaten uygun şekilde ayarlanmış bir sunucu bloğunuz olmalıdır.

Kontrol etmek için nano’yu veya en başka bir metin düzenleyiciyi kullanarak alanınızın yapılandırma dosyasını açıyoruz:

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

 

Mevcut server_name satırını bulun. Şöyle görünmeli:

...
server_name ornek.com www.ornek.com;
...

 

İlgili girdi varsa, düzenleyicinizden çıkın ve bir sonraki adıma geçin. Eğer yoksa, eşleşecek şekilde güncelleyin. Ardından dosyayı kaydedin, düzenleyicinizden çıkın ve yapılandırma düzenlemelerinizin sözdizimini doğrulayın:

sudo nginx -t

 

Bir hata alırsanız, sunucu blok dosyasını (/etc/nginx/sites-available/ornek.com) yeniden açın ve herhangi bir yazım hatası veya eksik karakter olup olmadığını kontrol edin. Yapılandırma dosyanızın söz dizimi doğru olduğunda, yeni yapılandırmayı yüklemek için Nginx’i yeniden yükleyin:

sudo systemctl reload nginx

 

Certbot artık doğru sunucu bloğunu bulabilir ve otomatik olarak güncelleyebilir.

Ardından, HTTPS trafiğine izin vermek için güvenlik duvarını güncelleyelim.

 

 

Adım 3 – Güvenlik Duvarı Üzerinden HTTPS’e İzin Verme

Önkoşul kısmında önerildiği gibi ufw güvenlik duvarını etkinleştirdiyseniz, ayarları HTTPS trafiğine izin verecek şekilde ayarlamanız gerekir. Zaten Nginx kurulumdan sonra ufw’ da birkaç kural kayıt etmektedir.

Geçerli yapılandırma ayarını aşağıdaki komut ile görebilirsiniz:

sudo ufw status

 

Muhtemelen şöyle bir çıktı ile karşılaşıyor olacağız, yani web sunucusuna yalnızca HTTP trafiğine izin verilmiştir:

Status: active

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

 

HTTPS trafiğine izin vermek için, Nginx Full profiline izin verin ve yedek Nginx HTTP profili kuralını siliyoruz:

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

 

Son durum aşağıdaki gibi olmalıdır:

sudo ufw status
Status: active

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

 

Şimdi, Certbot’u çalıştırıp sertifikalarımızı alalım.

 

Adım 4 – Bir SSL Sertifikası Alma

Certbot, eklentiler aracılığıyla SSL sertifikaları almak için çeşitli yollar sunar. Nginx eklentisi, Nginx’i yeniden yapılandırmakla ve gerektiğinde yapılandırmayı yeniden yüklemekle ilgilenecektir. Bu eklentiyi kullanmak için aşağıdakileri yazın:

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

 

Bu, sertifikanın geçerli olmasını istediğimiz alan adlarını -d kullanarak –nginx eklentisiyle birlikte certbot’u çalıştırır.

Certbot’u ilk kez çalıştırıyorsanız, bir e-posta adresi girmeniz ve hizmet şartlarını kabul etmeniz istenir. Bunu yaptıktan sonra, certbot Let’s Encrypt sunucusuyla iletişim kuracak ve ardından sertifika talep ettiğiniz alanı kontrol ettiğinizi doğrulamak için bir sorgulama gerçekleştirecektir.

Başarılı olursa, certbot HTTPS ayarlarınızı nasıl yapılandırmak istediğinizi soracaktır.

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

 

Seçimimizi yaptıktan sonra ENTER’a basın. Yapılandırma güncellenecek ve Nginx yeni ayarları almak için yeniden yüklenecektir. certbot, işlemin başarılı olduğunu ve sertifikalarınızın nerede depolandığını bildiren bir mesajla sonlandıracaktır:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/ornek.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/ornek.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

 

Sertifikalarınız indirilir, kurulur ve yüklenir. Web sitenizi https: // kullanarak yeniden yüklemeyi deneyin ve tarayıcınızın güvenlik göstergesine dikkat edin. Sitenin genellikle bir kilit simgesiyle uygun şekilde güvenli hale getirildiğini göstermelidir.

Yenileme sürecini test ederek bitirelim.

 

Adım 5 – Certbot Otomatik Yenilemesini Doğrulama

Let’s Encrypt’in sertifikaları yalnızca doksan gün geçerlidir. Bu, kullanıcıları sertifika yenileme işlemlerini otomatikleştirmeye teşvik etmek içindir. Kurduğumuz certbot paketi, günde iki kez çalışacak ve otuz gün içinde herhangi bir sertifikayı otomatik olarak yenileyecek bir sistem zamanlayıcı ekleyerek bunu bizim için halleder.

Zamanlayıcının durumunu  systemctl  ile sorgulayabilirsiniz:

sudo systemctl durumu 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

 

Yenileme sürecini test etmek için,  certbot  ile prova yapabilirsiniz:

sudo certbot renew --dry-run

Hiçbir hata görmüyorsanız, hazırsınız demektir. Gerektiğinde, Certbot sertifikalarınızı yenileyecek ve değişiklikleri almak için Nginx’i yeniden yükleyecektir. Otomatik yenileme işlemi başarısız olursa, Let’s Encrypt belirttiğiniz e-postaya bir mesaj göndererek sertifikanızın süresi dolmak üzereyken sizi uyarır.

 

Let’s Encrypt

Serdar Kurt

Merhaba, 1986 Ankara doğumluyum. Sakarya Üniversitesi Bilgisayar Programcılığı mezunuyum. Şu an özel bir şirkette Security Engineer pozisyonunda görev yapıyorum. Bilişim Teknolojileri alanında kendimi geliştirmeye devam ediyorum.

İlgili Makaleler

Abone ol
Bildir
guest
0 Yorum
Satır İçi Geri Bildirimler
Tüm yorumları görüntüle
Başa dön tuşu

Reklam Engelleyici Algılandı

Bana destek olmak için lütfen reklam engelleyicinizi devre dışı bırakınız ya da bu siteyi izin verilenler listesine ekleyiniz.