Ziyaretçi çekmeyi amaçlayan herhangi bir web sitesinin, alanı için SSL/TLS şifrelemesi içermesi gerekir. SSL/TLS sertifikaları, web sunucunuz ve tarayıcılarınız arasında güvenli bir bağlantı sağlar.
Let’s Encrypt, böyle bir korumayı kurmanıza izin veren ücretsiz bir sertifika yetkilisidir. Nginx sunucunuzun güvenliğini sağlamanın en basit yoludur.
Bu yazımızda, Certbot yazılımını kullanarak Let’s Encrypt sertifikaları alarak Nginx sunucunuzun güvenliğini sağlamanın en basit yolunu bulacaksınız.
Önkoşullar
- Ubuntu 20.04 (veya Ubuntu 18.04) çalıştıran bir sistem
- Bir terminal penceresine/komut satırına erişim
- sudo veya kök yerel/uzak makinelerde ayrıcalıklar
- Nginx kuruldu ve kuruldu
- Kayıtlı bir alan adı
- Söz konusu alan adı için yapılandırılmış bir sunucu bloğu
Ubuntu 20.04’te Let’s Encrypt ile Nginx’i Nasıl Güvenli Hale Getirirsiniz?
1. Adım: Certbot’u Kurun
Certbot, Let’s Encrypt sertifikalarını kullanarak HTTPS’yi otomatik olarak etkinleştirmek için açık kaynaklı bir yazılım aracıdır.
Let’s Encrypt ile Nginx’i güvenli hale getirmenin ilk adımı Certbot’u kurmaktır. Bunu yapmak için, bir terminal penceresi açarak ve yerel depoyu güncelleyerek başlayın:
sudo apt update
Ardından, aşağıdakileri çalıştırarak Certbot’u ve Nginx eklentisini indirip yükleyin:
sudo apt install certbot python3-certbot-nginx
Tip y
kurulumu onaylamak için ve Enter tuşuna basın.
2. Adım: Nginx Yapılandırmasını Kontrol Edin
Önkoşullarda belirtildiği gibi, zaten kayıtlı bir etki alanınız ve bu etki alanı için bir Nginx sunucu bloğunuz olmalıdır. Örnek olarak, bu makale etki alanını kullanır örnek.com.
Doğru kurulup kurulmadığını kontrol etmek için Nginx yapılandırma dosyasını açın:
sudo nano /etc/nginx/sites-available/example.com
Ardından, server_name
yönergesi ve etki alanı adınıza ayarlandığından emin olun. ile ve olmadan alan adını dahil etmek istediğiniz gibi www. önek, satır aşağıdakine benzer görünmelidir:
server_name example.com www.example.com;
3. Adım: Güvenlik Duvarını HTTPS Trafiğine İzin Verecek Şekilde Ayarlayın
Sonraki adım, güvenlik duvarını HTTPS trafiğine izin verecek şekilde ayarlamaktır.
Nginx kurulum kılavuzunu takip ettiyseniz, güvenlik duvarınızı Nginx HTTP’ye izin verecek şekilde zaten etkinleştirmişsinizdir. Let’s Encrypt sertifikalarını eklerken güvenlik duvarını şifreli trafik için yapılandırmanız gerekir.
1. Güvenlik duvarınızın etkin olduğundan ve HTTPS trafiğine izin verdiğinden emin olmak için şu komutu çalıştırın:
sudo ufw status
Çıktı size UFW’nin etkin olduğunu söylemeli ve size belirlenmiş kuralların bir listesini vermelidir. Aşağıdaki örnekte, güvenlik duvarının Nginx HTTP trafiğine izin verdiğini ancak HTTPS’ye izin vermediğini gösterir.
Nginx’in kural olarak ekleyebileceğiniz üç (3) profili vardır:
- Nginx HTTP (80 numaralı bağlantı noktasını açar)
- Nginx HTTPS (443 numaralı bağlantı noktasını açar – şifrelenmiş trafik)
- Nginx Dolu (80 ve 443 numaralı bağlantı noktalarını açar)
2. Şifreli trafiğe izin vermek için Nginx HTTPS profil veya kullanım Nginx Dolu ve mevcut Nginx HTTP kuralını silin:
a) Şu komutu çalıştırarak Nginx HTTPS trafiğine izin verin:
sudo ufw allow 'Nginx HTTPS'
b) Nginx HTTP’yi kaldırın ve bunun yerine Nginx Full’ü kullanın:
sudo ufw deny 'Nginx HTTP'
sudo ufw allow 'Nginx Full'
3. HTTPS trafiğine izin veren bir kural eklediğinizi doğrulayın. ufw status
emretmek.
4. Adım: SSL/TLS Sertifikasını Alın
Nginx’in Certbot eklentisi, Nginx’i yeniden yapılandırır ve gerektiğinde yapılandırmasını yeniden yükler. Bu nedenle, yapmanız gereken tek şey NGINX eklentisi ile sertifika oluşturmaktır.
1. Bunu yapmak için şu komutu çalıştırın:
sudo certbot --nginx -d example.com -d www.example.com
2. Çıktı sizden HTTPS ayarlarınızı yapılandırmanızı ister. Devam etmek için e-posta adresinizi girin ve hizmet şartlarını kabul edin.
3. HTTPS’yi yapılandırdıktan sonra, Certbot sertifika oluşturmayı tamamlar ve Nginx’i yeni ayarlarla yeniden yükler.
4. Son olarak, çıktı başarıyla bir sertifika oluşturduğunuzu gösterir ve sertifikanın sunucunuzdaki konumunu belirtir.
5. Adım: Otomatik Sertifika Yenilemeyi Etkinleştirin
Let’s Encrypt sertifikalarının süresi her 90 günde bir dolduğundan, Nginx cron işinin kurulmasını ve otomatik olarak yenilenmesini önerir.
1. İlk olarak, geçerli kullanıcı için crontab yapılandırma dosyasını açın:
crontab -e
2. Çalışan bir cron işi ekleyin. certbot
sertifikanın süresinin 30 gün içinde dolacağını tespit etmesi durumunda sertifikayı yenileyen komut. Günlük olarak belirli bir saatte çalışacak şekilde programlayın (bu örnekte, bunu sabah 05:00’te yapar):
0 5 * * * /usr/bin/certbot renew --quiet
Cron işi ayrıca şunları içermelidir: --quiet
niteliği, yukarıdaki komutta olduğu gibi. Bu, certbot’a görevi gerçekleştirdikten sonra herhangi bir çıktı eklememesi talimatını verir.
3. Cron işini ekledikten sonra değişiklikleri kaydedin ve dosyadan çıkın.
Çözüm
Bu makalede belirtilen adımları izlediyseniz, alanınız için SSL/TLS sertifikaları oluşturacak olan Let’s Encrypt ile Nginx’inizi başarıyla güvence altına almış olmanız gerekir. Ayrıca, Certbot’un sertifikaları otomatik olarak yenilemesini etkinleştirmiş olmanız gerekir.