giriiş
Let's Encrypt, ücretsiz TLS/SSL sertifikaları edinip yüklemenize olanak tanıyan ve böylece web sunucularında şifreli HTTPS'yi etkinleştiren bir Sertifika Yetkilisi'dir (CA). Gerekli adımların çoğunu (hatta tamamını) otomatikleştirmeye çalışan bir yazılım istemcisi olan Certbot sayesinde bu süreci basitleştirir. Şu anda, Apache ve Nginx'te sertifika edinme ve yükleme süreci tamamen otomatiktir.
Bu eğitimde, Ubuntu 18.04 üzerinde Nginx için ücretsiz bir SSL sertifikası almak ve sertifikanızı otomatik olarak yenilenecek şekilde ayarlamak için Certbot'u kullanacaksınız.
Ön koşullar
- Ubuntu 18.04 için bu ilk sunucu kurulumunu izleyerek, root olmayan bir sudo kullanıcısı ve bir güvenlik duvarı içeren bir Ubuntu 18.04 sunucusu kuruldu.
- Tamamen kayıtlı bir alan adı. Bu eğitim boyunca your_domain kullanacağız. Namecheap'ten bir alan adı satın alabilir, Freenom'dan ücretsiz bir alan adı edinebilir veya tercih ettiğiniz bir alan adı kayıt kuruluşunu kullanabilirsiniz.
- Sunucunuz için aşağıdaki DNS kayıtlarının her ikisi de ayarlanmıştır. Bunları nasıl ekleyeceğiniz hakkında daha fazla bilgi için DigitalOcean DNS girişini takip edebilirsiniz.
- Sunucunuzun genel IP adresini işaret eden your_domain adlı bir kayıt.
- Sunucunuzun genel IP adresini işaret eden www.your_domain uzantılı bir kayıt.
- Nginx, Ubuntu 18.04'e Nginx kurulumunu izleyerek kurulur. Alan adınız için bir sunucu bloğunuz olduğundan emin olun. Bu eğitimde de örnek olarak /etc/nginx/sites-available/your_domain kullanılmıştır.
Adım 1 – Certbot'u yükleyin
Let's Encrypt kullanarak SSL sertifikası almanın ilk adımı sunucunuza Certbot yazılımını kurmaktır.
Certbot projesi, çoğu kullanıcının yazılımlarını, başlangıçta Ubuntu'nun arkasındaki şirket olan Canonical tarafından geliştirilen ve şu anda birçok Linux dağıtımında bulunan bir paket yöneticisi olan Snap aracılığıyla yüklemesini öneriyor:
sudo snap install --classic certbotÇıktınız Certbot'un güncel sürümünü ve başarılı bir kurulumu gösterecektir:
Output
certbot 1.21.0 from Certbot Project (certbot-eff✓) installedArdından, /usr/bin/ klasöründen yeni yüklenen /snap/bin/certbot yürütülebilir dosyasına sembolik bir bağlantı oluşturun. Bu, certbot komutunun sunucunuzda düzgün çalışmasını sağlar. Bunu yapmak için aşağıdaki ln komutunu çalıştırın. Bu komut, sabit bağlantı yerine sembolik veya yumuşak bağlantı oluşturan -s işaretini içerir:
sudo ln -s /snap/bin/certbot /usr/bin/certbotCertbot artık kullanıma hazır, ancak Nginx için SSL'yi yapılandırabilmesi için önce bazı Nginx ayarlarını doğrulamanız gerekiyor.
Adım 2 – Nginx Yapılandırmasını Doğrulayın
Certbot'un, SSL'yi otomatik olarak yapılandırabilmesi için Nginx yapılandırmanızda doğru sunucu bloğunu bulması gerekir. Bunu, sertifika talep ettiğiniz etki alanıyla eşleşen bir server_name yönergesi arayarak yapar.
Nginx kurulum eğitiminde önerilen sunucu bloğu kurulum adımını izlerseniz, /etc/nginx/sites-available/your_domain dizininde sunucu_adı yönergesi uygun şekilde ayarlanmış, alanınız için bir sunucu bloğunuz olur.
Kontrol etmek için nano veya favori metin düzenleyicinizi kullanarak alan adınızın sunucu blok dosyasını açın:
sudo nano /etc/nginx/sites-available/your_domainMevcut server_name satırını bulun. Şöyle görünmelidir:
...
server_name your_domain www.your_domain;
...Eğer öyleyse editörünüzden çıkın ve bir sonraki adıma geçin.
Eğer uyumlu değilse, güncelleyin. Ardından dosyayı kaydedin ve düzenleyicinizden çıkın. Nano kullanıyorsanız, bunu CTRL + X, ardından Y ve ENTER tuşlarına basarak yapabilirsiniz.
Şimdi yapılandırma düzenlemelerinizin sözdizimini doğrulayın:
sudo nginx -tBir hata alırsanız, sunucu blok dosyasını yeniden açın ve yazım hataları veya eksik karakterler olup olmadığını kontrol edin. Yapılandırma dosyanızın sözdizimi doğru olduğunda, yeni yapılandırmayı yüklemek için Nginx'i yeniden yükleyin:
sudo systemctl reload nginxCertbot artık doğru sunucu bloğunu bulup güncelleyebiliyor.
Daha sonra güvenlik duvarınızı HTTPS trafiğine izin verecek şekilde güncelleyin.
Adım 3 – Güvenlik duvarı üzerinden HTTPS'ye izin verin
Ön koşul kılavuzlarında önerildiği gibi UFW güvenlik duvarını etkinleştirdiyseniz, HTTPS trafiğine izin vermek için ayarları değiştirmeniz gerekecektir. Neyse ki Nginx, kurulum sırasında UFW ile birkaç profil kaydeder.
Mevcut ayarları kontrol etmek için aşağıdakileri çalıştırabilirsiniz:
sudo ufw statusAşağıdaki gibi bir çıktı almalısınız; bu, web sunucusuna yalnızca HTTP trafiğinin izin verildiğini gösterir:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)Ek HTTPS trafiğine izin vermek için tam Nginx profili iznini verin ve ek Nginx HTTP iznini kaldırın:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'Artık ufw status komutunu çalıştırdığınızda, şu yeni kurallar yansıyacaktır:
sudo ufw statusOutput
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)Daha sonra Certbot’u çalıştırıp sertifikalarınızı alacaksınız.
Adım 4 – SSL Sertifikası Edinin
Certbot, eklentiler aracılığıyla SSL sertifikaları edinmenin çeşitli yollarını sunar. Nginx eklentisi, Nginx'i yeniden yapılandırır ve gerekirse yapılandırmayı yeniden yükler. Bu eklentiyi kullanmak için aşağıdakileri çalıştırın:
sudo certbot --nginx -d your_domain -d your_domain
Bu, certbot'u –nginx uzantısıyla çalıştırır ve sertifikanın geçerli olmasını istediğiniz adları belirtmek için -d'yi kullanır.
Certbot'u ilk kez çalıştırıyorsanız, bir e-posta adresi girmeniz ve hizmet şartlarını kabul etmeniz istenecektir. Bunu yaptıktan sonra, certbot, alan adınız için bir sertifika talep etmek üzere Let's Encrypt sunucusuyla iletişime geçecektir. Başarılı olursa, aşağıdaki çıktıyı alacaksınız:
Output
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-01-27.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for your_domain to /etc/nginx/sites-enabled/your_domain
Successfully deployed certificate for www.your_domain to /etc/nginx/sites-enabled/your_domain
Congratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 indirilecek, kurulacak ve yüklenecektir. Web sitenizi https:// kullanarak yeniden yüklemeyi deneyin ve tarayıcınızın güvenlik göstergesine dikkat edin. Güvenlik göstergesi, sitenin düzgün bir şekilde güvenli olduğunu ve genellikle yeşil bir kilit simgesiyle gösterildiğini gösterir. Sunucunuzu SSL Labs'ın sunucu testini kullanarak test ederseniz, A puanı alırsınız.
SSL sertifikanızı aldıktan sonra son adım yenileme sürecini test etmektir.
Adım 5 – Certbot Otomatik Yenileme Doğrulaması
Let's Encrypt sertifikaları yalnızca doksan gün geçerlidir. Bu, kullanıcıları sertifika yenileme sürecini otomatikleştirmeye teşvik etmek içindir. Yüklediğiniz certbot paketi, /etc/cron.d dosyasına bir yenileme betiği ekleyerek bu sorunu çözer. Bu betik günde iki kez çalışır ve süresi dolmasına otuz gün kala tüm sertifikaları otomatik olarak yeniler.
Yenileme sürecini test etmek için certbot ile bir deneme çalışması yapabilirsiniz:
sudo certbot renew --dry-runHerhangi bir hata almazsanız, her şey tamamdır. Gerekirse, 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, sertifikanızın süresi dolmak üzereyken sizi uyarmak için belirttiğiniz e-posta adresine bir mesaj gönderecektir.
Sonuç
Bu eğitimde, Let's Encrypt istemci certbot'unu kurdunuz, alan adınız için SSL sertifikalarını indirdiniz, Nginx'i bu sertifikaları kullanacak şekilde yapılandırdınız ve otomatik sertifika yenilemeyi ayarladınız. Certbot kullanımı hakkında daha fazla sorunuz varsa, başlangıç için dokümanlarına bakabilirsiniz.









