X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe)
X
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe)
X
🔥 Türkiye Lokasyon VDS & VPS sunucularında %20 indirim! Kupon Kodu: Türkiye'de %20 İndirim! Kod: DATA20
Şirketimizdeki KALİTEYİ Yakından Tanıyın!

Certbot ile Ücretsiz Let's Encrypt SSL Kurulumu

Certbot ile Ücretsiz Let's Encrypt SSL Kurulumu

Ücretsiz SSL sertifikası almak için en yaygın yöntem, Let's Encrypt sertifika otoritesini Certbot aracıyla kullanmaktır. Certbot, sertifikayı alır, Nginx yapılandırmanızı HTTPS'e göre düzenler ve süresi dolmadan otomatik olarak yeniler. Bu rehberde Ubuntu 22.04/24.04 ve AlmaLinux 9 üzerinde Certbot'u Nginx eklentisiyle kuruyor, otomatik yenilemeyi systemd zamanlayıcısıyla doğruluyor ve sık karşılaşılan hataların çözümlerini anlatıyoruz.

Let's Encrypt ve Certbot Nasıl Çalışır?

Let's Encrypt, alan adı doğrulamalı (DV) sertifikaları ücretsiz ve otomatik olarak veren bir sertifika otoritesidir. Sertifika verilmeden önce, alan adının gerçekten sizin kontrolünüzde olduğunu kanıtlamanız gerekir. Bu kanıt ACME protokolü üzerinden yapılır ve en yaygın iki doğrulama türü vardır:

  • HTTP-01: Let's Encrypt, alan adınızın 80 numaralı portunda /.well-known/acme-challenge/ altında belirli bir dosyayı arar. Certbot'un Nginx eklentisi bu dosyayı geçici olarak kendisi yerleştirir.
  • DNS-01: Alan adınıza belirli bir TXT kaydı eklemeniz istenir. Joker (wildcard) sertifikalar yalnızca bu yöntemle alınabilir.

Certbot ise bu süreci sizin yerinize yürüten ACME istemcisidir. Let's Encrypt sertifikaları şu an 90 gün geçerlidir ve sektör genelinde sertifika ömürleri kısalmaya devam etmektedir. Bu yüzden elle yenileme yerine otomatik yenilemenin doğru çalıştığından emin olmak, kurulumun en önemli parçasıdır.

Kurulum Öncesi Kontrol Listesi

Certbot hatalarının büyük bölümü kurulumdan önceki eksiklerden kaynaklanır. Başlamadan şunları doğrulayın:

  1. DNS kaydı: Alan adınızın ve varsa www alt alan adının A kaydı sunucu IP'nizi göstermeli. DNS sorgulama aracı ile kontrol edebilirsiniz.
  2. AAAA kaydı: Alan adında bir IPv6 (AAAA) kaydı varsa, o adres de bu sunucuya ait olmalı ve Nginx IPv6'yı dinlemelidir. Let's Encrypt IPv6'yı tercih eder; eski bir sunucuyu gösteren AAAA kaydı, doğrulamanın başarısız olmasının en sinsi sebeplerinden biridir.
  3. Port 80 açık olmalı: HTTPS kullanacak olsanız bile HTTP-01 doğrulaması için 80 numaralı port dışarıdan erişilebilir olmalıdır. Port kontrol aracı ile test edin.
  4. Nginx server block'u hazır olmalı: Certbot, hangi dosyayı düzenleyeceğini server_name satırına bakarak bulur. Server block oluşturmadıysanız önce Nginx kurulum rehberimizi izleyin.

Certbot Kurulumu

Ubuntu 22.04 ve 24.04

Ubuntu'da iki yöntem vardır. En basit yöntem, Ubuntu deposundaki paketi kurmaktır:

sudo apt update
sudo apt install certbot python3-certbot-nginx

Certbot geliştiricileri ise her zaman en güncel sürümü almak için snap paketini önerir. Bu yöntemi seçerseniz apt ile kurulmuş certbot paketini önce kaldırın; ikisini birlikte kullanmayın:

sudo apt remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

İki yöntem de çalışır; farkı, otomatik yenilemeyi yürüten zamanlayıcının adında göreceğiz.

AlmaLinux 9

AlmaLinux'ta Certbot, EPEL deposunda bulunur. Önce EPEL'i etkinleştirin, ardından Certbot'u ve Nginx eklentisini kurun:

sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx

Güvenlik duvarında HTTP ve HTTPS servislerinin açık olduğundan emin olun:

sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload

Nginx Eklentisi ile SSL Sertifikası Alma

Kurulum tamamlandıktan sonra sertifikayı tek komutla alabilirsiniz. Her alan adı için ayrı bir -d parametresi verin:

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

İlk çalıştırmada Certbot sizden üç şey ister: hesap kurtarma ve önemli duyurular için bir e-posta adresi, kullanım koşullarını kabul etmeniz ve isteğe bağlı olarak e-posta listesine katılım. Ardından doğrulama yapılır, sertifika alınır ve server block'unuza şu satırlar eklenir:

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/ornek.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/ornek.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

Certbot sürümüne bağlı olarak HTTP'den HTTPS'e yönlendirme ya size sorulur ya da varsayılan olarak eklenir. Yönlendirmeyi açıkça istemek için komuta --redirect parametresini ekleyebilirsiniz. İşlem bittikten sonra Nginx otomatik olarak yeniden yüklenir.

Yalnızca Sertifika Almak

Certbot'un Nginx dosyalarınıza dokunmasını istemiyorsanız certonly kullanın. Sertifika alınır, yapılandırmayı ise siz yaparsınız:

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

Webroot Yöntemi

Nginx eklentisinin yapılandırmanıza müdahale etmesini hiç istemediğiniz durumlarda, örneğin sunucuda karmaşık bir ters vekil yapısı varsa, webroot yöntemini kullanabilirsiniz. Bu yöntemde Certbot doğrulama dosyasını belirttiğiniz kök dizine yazar ve Nginx bu dosyayı normal bir statik dosya gibi sunar:

sudo certbot certonly --webroot -w /var/www/ornek.com/html -d ornek.com -d www.ornek.com

Webroot yöntemi yenilemede de aynı dizini kullanır. Sertifikayı Nginx'e kendiniz eklemeniz ve yenilemeden sonra Nginx'i yeniden yüklemek için bir deploy hook tanımlamanız gerekir; bunun nasıl yapılacağını aşağıda anlatıyoruz.

HTTPS Sonrası Önerilen Nginx Ayarları

Sertifika kurulduktan sonra birkaç ek ayarla hem güvenliği hem de performansı artırabilirsiniz:

  • HTTP/2: Ubuntu 22.04 ve 24.04 depolarındaki Nginx sürümlerinde HTTP/2, listen 443 ssl http2; şeklinde etkinleştirilir. Nginx 1.25.1 ve sonrasında ise ayrı bir http2 on; yönergesi kullanılır. Sürümünüzü nginx -v ile kontrol edin.
  • HSTS: Tarayıcılara sitenize yalnızca HTTPS ile bağlanmalarını söyleyen başlıktır: add_header Strict-Transport-Security "max-age=31536000" always;. Bu başlığı ancak tüm alt alan adlarınızın HTTPS ile çalıştığından emin olduktan sonra ekleyin; tarayıcılar bu bilgiyi belirtilen süre boyunca hatırlar ve geri almak zordur. İlk denemede kısa bir süreyle başlamak güvenlidir.
  • Karışık içerik: HTTPS sayfasında http:// ile yüklenen resim veya betikler tarayıcıda uyarıya ya da engellemeye neden olur. Uygulamanızın site adresini https olarak güncelleyin.

Her değişiklikten sonra sudo nginx -t ve sudo systemctl reload nginx komutlarını çalıştırmayı unutmayın.

Sertifika Dosyaları Nerede Tutulur?

Yolİçerik
/etc/letsencrypt/live/ornek.com/fullchain.pemSertifika ve ara sertifika zinciri (Nginx'te ssl_certificate)
/etc/letsencrypt/live/ornek.com/privkey.pemÖzel anahtar (ssl_certificate_key), kimseyle paylaşmayın
/etc/letsencrypt/renewal/ornek.com.confBu sertifikanın yenileme ayarları
/etc/letsencrypt/archive/ornek.com/Sertifikanın tüm sürümleri; live dizinindeki dosyalar bunlara bağlantıdır
/var/log/letsencrypt/letsencrypt.logCertbot günlükleri, hata ayıklarken ilk bakılacak yer

Sunucu taşırken veya yedek alırken tüm /etc/letsencrypt dizinini birlikte taşıyın. live dizinindeki bağlantılar archive dizinine işaret ettiği için tek tek dosya kopyalamak yenilemeyi bozar.

Otomatik Yenilemeyi Doğrulama

Certbot, süresinin dolmasına 30 günden az kalan sertifikaları yeniler. Bu işlemi her gün iki kez çalışan bir systemd zamanlayıcısı tetikler. Zamanlayıcının adı kurulum yöntemine göre değişir:

Kurulum yöntemiZamanlayıcı adıVarsayılan durum
Ubuntu, apt paketicertbot.timerKurulumla etkin gelir
Ubuntu, snap paketisnap.certbot.renew.timerKurulumla etkin gelir
AlmaLinux 9, EPEL paketicertbot-renew.timerElle etkinleştirilmesi gerekir

AlmaLinux'ta zamanlayıcıyı etkinleştirin:

sudo systemctl enable --now certbot-renew.timer

Her dağıtımda zamanlayıcının listede olduğunu ve bir sonraki çalışma zamanını kontrol edin:

systemctl list-timers | grep -i certbot

Ardından yenilemenin gerçekten çalışacağını, gerçek bir sertifika almadan test edin:

sudo certbot renew --dry-run

Bu komut hatasız tamamlanıyorsa otomatik yenileme hazırdır. Nginx eklentisiyle alınan sertifikalarda yenilemeden sonra Nginx otomatik olarak yeniden yüklenir.

Yenileme Sonrası Başka Servisleri Yeniden Yüklemek

Aynı sertifikayı Postfix, Dovecot veya bir Node.js uygulaması gibi başka servisler de kullanıyorsa, yenilemeden sonra onların da yeniden yüklenmesi gerekir. Bunun için deploy hook dizinine çalıştırılabilir bir betik koyun:

sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-services.sh
#!/bin/sh
systemctl reload postfix
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-services.sh

Bu dizindeki betikler yalnızca bir sertifika başarıyla yenilendiğinde çalışır.

Joker (Wildcard) Sertifika

*.ornek.com biçimindeki joker sertifikalar yalnızca DNS-01 doğrulamasıyla alınabilir. Elle yöntem şu şekildedir:

sudo certbot certonly --manual --preferred-challenges dns -d 'ornek.com' -d '*.ornek.com'

Certbot size eklemeniz gereken TXT kaydını gösterir. Ancak --manual yöntemiyle alınan sertifikalar otomatik yenilenemez, çünkü her seferinde yeni bir TXT değeri gerekir. Joker sertifikayı kalıcı kullanacaksanız DNS sağlayıcınıza uygun bir Certbot DNS eklentisi kullanarak süreci otomatikleştirin.

Sık Karşılaşılan Hatalar ve Çözümleri

  • Timeout during connect veya Connection refused: 80 numaralı port güvenlik duvarında kapalıdır ya da Nginx çalışmıyordur. UFW'de Nginx Full profilini, AlmaLinux'ta firewalld servislerini kontrol edin.
  • Invalid response from ... 404: İstek başka bir sunucuya veya başka bir server block'a gidiyordur. A ve AAAA kayıtlarını ve server_name satırını doğrulayın.
  • Could not automatically find a matching server block: -d ile verdiğiniz alan adı hiçbir server block'un server_name satırında yok.
  • CAA kaydı engeli: Alan adında CAA kaydı varsa letsencrypt.org'a izin vermelidir.
  • Too many certificates veya rate limit: Let's Encrypt'in sertifika verme sınırları vardır. Denemelerinizi --dry-run veya test ortamını kullanan --test-cert parametresiyle yapın.

Sertifikayı Kontrol Etme ve İzleme

Sunucunuzdaki sertifikaları ve bitiş tarihlerini listelemek için:

sudo certbot certificates

Sitenizin dışarıdan nasıl göründüğünü, zincirin eksiksiz olup olmadığını ve kalan süreyi SSL kontrol aracımızla doğrulayabilirsiniz. Let's Encrypt süre dolum hatırlatma e-postalarını sonlandırdığı için, yenilemenin çalıştığını kendi izleme yönteminizle takip etmeniz önemlidir.

Sık Sorulan Sorular

Let's Encrypt sertifikası ücretli sertifikadan daha mı az güvenli?

Hayır. Şifreleme gücü aynıdır. Fark, doğrulama türündedir: Let's Encrypt yalnızca alan adı doğrulamalı sertifika verir; kurum bilgisinin doğrulandığı OV veya EV sertifikaları vermez.

Certbot'u Apache ile kullanabilir miyim?

Evet. Apache için python3-certbot-apache paketini kurup --apache parametresini kullanırsınız; mantık aynıdır.

Sunucumda kontrol paneli varsa Certbot kurmalı mıyım?

Genellikle hayır. cPanel ve Plesk gibi paneller kendi SSL otomasyonlarına sahiptir. Panelin yönettiği yapılandırmalara Certbot ile müdahale etmek çakışmalara yol açabilir.

Sertifikayı nasıl iptal eder veya silerim?

Özel anahtarın ele geçirildiğinden şüpheleniyorsanız sudo certbot revoke --cert-name ornek.com ile iptal edin. Yalnızca sunucudan kaldırmak için sudo certbot delete --cert-name ornek.com kullanın ve Nginx yapılandırmasındaki ilgili satırları temizleyin.

Ücretsiz SSL kurulumu birkaç dakikanızı alır, ama ziyaretçi güveni ve arama motoru görünürlüğü açısından getirisi kalıcıdır. PHP tabanlı bir site yayınlıyorsanız tüm yığını LEMP stack kurulum rehberimizle tamamlayabilirsiniz. Kendi sertifikalarınızı tam yetkiyle yönettiğiniz bir ortam için DDoS korumalı VDS satın al sayfamızdaki paketleri, başlangıç projeleri için ise VPS sunucu seçeneklerini inceleyebilirsiniz.

VDS Sanal Sunucu
TÜRKİYE / ANKARA
₺139 /ay'dan başlayan
Paketleri İncele
  •  NVMe SSD Disk
  •  DDoS Koruması Dahil
  •  Limitsiz Trafik
  •  0–15 Dakikada Kurulum
  •  Windows - Linux
  •  7/24 Destek
Top
Destek Hattı0850 840 90 28

DNS Adresleri

ns1.datahost.net.tr
ns2.datahost.net.tr
DataHost Destek Çevrimiçi

Satış öncesi tüm sorularınız için WhatsApp hattımıza yazın; size hızlıca yardımcı olalım.

WhatsApp'tan Yaz