Güvenlik & SSL

    Let's Encrypt ile Ücretsiz SSL Kurulumu (Certbot Rehberi)

    Let's Encrypt'in nasıl çalıştığını, Certbot ile Nginx/Apache üzerinde ücretsiz SSL almayı, otomatik yenilemeyi ve sık hataların çözümünü anlatan pratik rehber.

    12 dk okuma Güncellendi: 1 Temmuz 2026

    Bir web sitesini HTTPS üzerinden yayınlamak bugün artık bir tercih değil, olması gereken varsayılan durum. Tarayıcılar şifresiz HTTP sayfalarını "Güvenli değil" uyarısıyla damgalıyor, arama motorları HTTPS'i sıralama sinyalleri arasında sayıyor ve ziyaretçiler adres çubuğunda kilit simgesini görmezse tereddüt ediyor. Neyse ki bu geçişi yapmak için artık ne para ödemek ne de karmaşık formlarla uğraşmak gerekiyor. Bu rehberde, ücretsiz ve baştan sona otomatikleştirilebilir bir çözüm olan Let's Encrypt sertifikalarını Certbot aracıyla Ubuntu/Debian tabanlı bir sunucuya sıfırdan nasıl kuracağınızı komut komut anlatıyoruz. Nginx ve Apache için sertifika almayı, sertifikayı otomatik yenilemeyi, doğrulama sürecinin arka planda nasıl işlediğini ve en sık takıldığınız hataların çözümlerini gerçek örneklerle ele alıyoruz.

    Konuyu daha geniş bir çerçeveye oturtmak isterseniz SSL/TLS'in ne olduğunu ve sertifika türlerini anlatan SSL sertifikası nedir yazımıza da göz atmanızı öneririz.

    Let's Encrypt Nedir?#

    Let's Encrypt, ISRG (Internet Security Research Group) tarafından yürütülen, kâr amacı gütmeyen bir sertifika otoritesidir (CA). Kuruluş hedefi tek cümleyle özetlenebilir: internetin tamamını şifreli hale getirmek için SSL/TLS sertifikalarını ücretsiz ve otomatik biçimde dağıtmak. Bütün büyük tarayıcılar ve işletim sistemleri Let's Encrypt'in kök sertifikasına güvendiği için bu CA'dan aldığınız sertifika, ücretli bir sağlayıcıdan aldığınızla teknik olarak birebir aynı geçerliliğe sahiptir.

    Let's Encrypt'i geleneksel sertifika sağlayıcılarından ayıran üç temel özellik var:

    • Uçtan uca otomasyon: Sertifika alma, kurma ve yenileme adımlarının tamamı ACME (Automatic Certificate Management Environment) protokolü üzerinden komut satırından yürütülür. Manuel başvuru formu, e-posta onayı ya da telefonla kimlik doğrulama gibi adımların hiçbiri yoktur.
    • Kısa geçerlilik süresi: Sertifikalar yalnızca 90 gün geçerlidir. İlk bakışta bir eksiklik gibi görünen bu süre, otomatik yenilemeyle birleşince aslında güvenliği güçlendirir; sızdırılan bir özel anahtarın kötüye kullanılabileceği zaman aralığı daralır.
    • Yalnızca alan adı doğrulaması (DV): Let's Encrypt sadece alan adının sizin kontrolünüzde olduğunu doğrular; şirket kimliğini teyit eden OV/EV sertifikaları sunmaz. Blog, kurumsal tanıtım sitesi, API uç noktası ve pek çok e-ticaret senaryosu için bu tür fazlasıyla yeterlidir.

    Certbot ise bu ACME protokolünü konuşan, EFF (Electronic Frontier Foundation) tarafından geliştirilen resmi istemcidir. Sunucunuza kurulur, Let's Encrypt ile arka planda haberleşir, sahiplik doğrulamasını halleder, sertifikayı indirir ve dilerseniz web sunucunuzun (Nginx ya da Apache) yapılandırmasını sizin yerinize düzenler. Kısacası "sertifikayı al, kur, yenile" döngüsünü tek elden yöneten araç Certbot'tur.

    Ön Koşullar#

    Kuruluma başlamadan önce aşağıdaki maddelerin hazır olduğundan emin olun; bunların biri eksikse doğrulama adımında takılırsınız:

    • Kök (root) ya da sudo yetkili bir kullanıcıyla eriştiğiniz bir Linux sunucusu. Rehber Ubuntu 22.04 / 24.04 üzerinden ilerler, ancak Debian ve türevi dağıtımlarda da aynı komutlar geçerlidir.
    • Sunucunun genel IP adresine yönlendirilmiş bir alan adı. Örneğin ornek.com ve www.ornek.com için tanımladığınız A (IPv6 kullanıyorsanız AAAA) DNS kayıtları sunucunuzun IP'sini göstermelidir.
    • Sunucuda çalışan bir web sunucusu: Nginx veya Apache. Henüz kurmadıysanız Ubuntu'da Nginx kurulumu rehberimiz temiz bir başlangıç sunar.
    • 80 ve 443 portlarının dışarıya açık olması. Varsayılan HTTP-01 doğrulaması 80 portunu, sitenizin şifreli trafiği ise 443 portunu kullanır.

    DNS kaydınızın gerçekten sunucuya çözümlendiğini kurulumdan önce doğrulayın:

    dig +short ornek.com
    

    Dönen IP adresi sunucunuzun IP'siyle aynı değilse Certbot doğrulamayı geçemez ve boşuna deneme yaparak hız limitine yaklaşırsınız. Yeni eklenen ya da değiştirilen DNS kayıtlarının internet genelinde yayılması bazen birkaç saat sürebilir; bu konunun ayrıntısını DNS yayılma süresi yazısında bulabilirsiniz. Alan adı kayıtlarınızı düzenlemekte destek isterseniz domain hizmetlerimiz üzerinden yönetebilirsiniz.

    Certbot Kurulumu#

    Certbot'u kurmanın iki yaygın yolu vardır: snap (EFF'in resmî olarak önerdiği, her zaman en güncel sürümü veren yöntem) ve apt (dağıtımın kendi deposundan, çoğu zaman bir miktar daha eski bir sürüm). En yeni özellikleri ve güvenlik düzeltmelerini garanti altına aldığı için snap yöntemini önceliklendiriyoruz.

    Yöntem 1: Snap ile (önerilen)#

    Önce sistemin güncel olduğundan ve snapd'nin kurulu olduğundan emin olun:

    sudo apt update
    sudo apt install -y snapd
    sudo snap install core
    sudo snap refresh core
    

    Ardından Certbot'u kurun ve certbot komutunun sistem genelinde çalışabilmesi için bir sembolik bağlantı oluşturun:

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

    Kurulumun başarılı olduğunu sürüm çıktısıyla teyit edin:

    certbot --version
    

    Yöntem 2: apt ile#

    Snap kullanmak istemiyorsanız ya da sunucunuz snap paketlerini desteklemiyorsa Certbot'u dağıtım deposundan da kurabilirsiniz. Bu yöntemde web sunucusu eklentisini de aynı anda yüklemeniz gerekir. Nginx için:

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

    Apache kullanıyorsanız Nginx eklentisi yerine Apache eklentisini kurun:

    sudo apt install -y certbot python3-certbot-apache
    

    Bu eklentiler (python3-certbot-nginx / python3-certbot-apache) Certbot'un web sunucusu yapılandırmasını otomatik düzenlemesini sağlar. Eklenti olmadan sertifikayı yine alabilirsiniz, ancak HTTPS bloklarını kendiniz elle yazmanız gerekir. İki kurulum yöntemini karıştırmamaya dikkat edin; snap ve apt üzerinden iki ayrı Certbot bulundurmak, hangi sürümün çalıştığı konusunda kafa karışıklığı yaratır.

    Nginx için SSL Sertifikası Alma#

    Nginx eklentisiyle sertifika almak neredeyse tek komuta iner. Certbot doğrulamayı yapar, sertifikayı indirir, Nginx yapılandırmanıza HTTPS bloğunu ekler ve dilerseniz 80 portundan gelen trafiği 443'e yönlendirir.

    Başlamadan önce Nginx sunucu bloğunuzdaki server_name satırının doğru alan adını içerdiğinden emin olun. /etc/nginx/sites-available/ornek.com benzeri bir dosyada şuna yakın bir yapı olmalı:

    server {
        listen 80;
        server_name ornek.com www.ornek.com;
        root /var/www/ornek.com;
        index index.html;
    }
    

    Certbot doğrulamayı server_name üzerinden eşleştirdiği için buradaki alan adlarının, komuta vereceğiniz -d değerleriyle örtüşmesi önemlidir. Ardından sertifikayı alın:

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

    Certbot ilk çalıştırmada size yenileme uyarıları ve acil durum bildirimleri için bir iletişim e-postası soracak, hizmet şartlarını onaylamanızı isteyecek ve HTTP trafiğini otomatik olarak HTTPS'e yönlendirmek isteyip istemediğinizi soracaktır. Yönlendirmeyi seçmeniz (genellikle 2 numaralı seçenek) önerilir; böylece siteye http:// ile gelenler kendiliğinden https:// adresine taşınır.

    İşlem tamamlandığında Certbot, Nginx yapılandırmanıza aşağıdakine benzer satırlar eklemiş olur:

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

    Değişikliklerin devreye girmesi için Nginx yapılandırmasını önce sınayın, sonra yeniden yükleyin:

    sudo nginx -t
    sudo systemctl reload nginx
    

    sudo nginx -t çıktısında "syntax is ok" ve "test is successful" ifadelerini görüyorsanız her şey yolundadır. Artık https://ornek.com adresini ziyaret ettiğinizde tarayıcıda geçerli bir kilit simgesi görmelisiniz.

    Apache için SSL Sertifikası Alma#

    Apache tarafında süreç neredeyse aynıdır; tek fark --nginx yerine --apache bayrağını kullanmanızdır. Certbot bu modda mod_ssl'i etkinleştirir ve ilgili sanal sunucu (virtual host) yapılandırmasını düzenler:

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

    Certbot, /etc/apache2/sites-available/ altında ornek.com-le-ssl.conf gibi ayrı bir SSL yapılandırma dosyası üretir ve 443 portunu dinleyen bir <VirtualHost> bloğu ekler. Kurulum bitince Apache yapılandırmasını sınayıp servisi yeniden yükleyin:

    sudo apache2ctl configtest
    sudo systemctl reload apache2
    

    Sertifikayı yalnızca almak isteyip yapılandırmayı elle yönetmeyi tercih ediyorsanız (örneğin önünde ayrı bir reverse proxy katmanı varsa) certonly alt komutunu kullanabilirsiniz. Bu yöntem web sunucusundan bağımsızdır; sitenizin dosya kök dizinini -w ile verirsiniz:

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

    Bu durumda sertifika dosyaları yine /etc/letsencrypt/live/ornek.com/ altında oluşur; fullchain.pem ve privkey.pem yollarını web sunucusu yapılandırmanıza kendiniz eklersiniz.

    HTTP-01 Doğrulaması Nasıl Çalışır?#

    Certbot'un alan adı sahipliğini nasıl kanıtladığını bilmek, bir hatayla karşılaştığınızda çok işinize yarar. Varsayılan yöntem HTTP-01 challenge'dır ve arka planda şu adımlarla işler:

    1. Certbot, Let's Encrypt sunucusuna bir sertifika talebi gönderir.
    2. Let's Encrypt rastgele bir "token" (belirteç) üretip Certbot'a iletir.
    3. Certbot bu belirteci sunucunuzda http://ornek.com/.well-known/acme-challenge/<token> yolunda geçici bir dosya olarak yayınlar.
    4. Let's Encrypt sunucuları alan adınız üzerinden 80 portundan bu dosyaya erişmeye çalışır. Bekledikleri içeriği görürlerse alan adının gerçekten sizin kontrolünüzde olduğunu doğrulamış olurlar.
    5. Doğrulama başarılıysa sertifika verilir ve geçici dosya otomatik olarak silinir.

    Bu akış, 80 portunun neden dışarıya açık olması gerektiğini net biçimde açıklar. Doğrulama sırasında güvenlik duvarı, bulut sağlayıcının güvenlik grubu ya da 80 portunu tutan başka bir servis bu erişimi engelliyorsa challenge başarısız olur ve sertifika verilmez.

    Alternatif olarak DNS-01 yöntemi de vardır: belirteç, sunucuya bir dosya olarak değil, alan adınıza geçici bir TXT DNS kaydı olarak eklenir. Bu yöntem 80 portu gerektirmez ve joker (wildcard) sertifikalar (*.ornek.com) için zorunludur. DNS-01 kullanmak için DNS sağlayıcınızın API'sini destekleyen bir Certbot eklentisi gerekir; böylece Certbot gereken TXT kaydını sizin adınıza otomatik ekleyip doğrulama sonrası kaldırabilir.

    Otomatik Yenileme#

    Let's Encrypt sertifikaları 90 günde bir dolduğu için otomatik yenileme, kurulumun aslında en önemli parçasıdır. İyi haber şu: Certbot ister snap ister apt ile kurulmuş olsun, kurulum sırasında otomatik yenilemeyi zaten yapılandırır. Yani çoğu durumda ek bir işlem yapmanız gerekmez, yalnızca çalıştığını doğrulamanız yeterlidir.

    Önce sistemde bir systemd timer ya da cron görevinin tanımlı olup olmadığını kontrol edin:

    sudo systemctl list-timers | grep certbot
    

    Çıktıda snap.certbot.renew.timer (snap kurulumu) ya da certbot.timer (apt kurulumu) görüyorsanız otomatik yenileme etkindir. Bu zamanlayıcı günde iki kez çalışır, ancak yalnızca son kullanma tarihine 30 günden az kalan sertifikaları gerçekten yeniler; henüz erken olan sertifikalara dokunmaz.

    Yenilemenin gerçekten sorunsuz çalışacağını canlı sertifikaya hiç dokunmadan görmek için kuru çalıştırma (dry run) yapın:

    sudo certbot renew --dry-run
    

    Bu komut tüm yenileme sürecini baştan sona simüle eder ama Let's Encrypt'ten gerçek bir sertifika istemez, dolayısıyla hız limitlerini de tüketmez. Hata almadan tamamlanıyorsa yenileme düzeneğiniz sağlamdır ve rahatlıkla arkanıza yaslanabilirsiniz.

    systemd timer'ı bulunmayan (örneğin daha eski) bir sistemdeyseniz yenilemeyi cron ile elle de ekleyebilirsiniz. sudo crontab -e çalıştırıp aşağıdaki satırı ekleyin:

    0 3 * * * certbot renew --quiet --post-hook "systemctl reload nginx"
    

    Buradaki --post-hook, yalnızca bir sertifika gerçekten yenilendiğinde çalışır ve web sunucusunun yeni sertifikayı belleğe alması için Nginx'i yeniden yükler. Apache kullanıyorsanız komuttaki nginx yerine apache2 yazmanız yeterlidir.

    Yaygın Hatalar ve Çözümleri#

    Kurulum sırasında en sık karşılaşılan sorunları ve pratik çözümlerini aşağıda topladık.

    "Timeout during connect (likely firewall problem)"#

    Bu mesaj, Let's Encrypt'in 80 portundan sunucunuza hiç ulaşamadığı anlamına gelir. Sırayla şunları kontrol edin:

    • Sunucunun güvenlik duvarında 80 ve 443 portlarını açın: sudo ufw allow 80,443/tcp
    • Bulut sağlayıcınızın güvenlik grubu veya harici firewall kurallarında bu iki portun dışa açık olduğundan emin olun.
    • DNS A kaydınızın doğru IP'yi gösterdiğini dig +short ornek.com ile teyit edin; yanlış IP de aynı hataya yol açar.

    "DNS problem: NXDOMAIN looking up A for ornek.com"#

    Alan adınız için bir A kaydı hiç bulunamadı ya da kayıt hatalı. Eksik kaydı ekleyin veya yanlış olanı düzeltin, ardından yayılmasını bekleyin. dig +short ornek.com çıktısında beklediğiniz IP görünene kadar Certbot'u tekrar çalıştırmayın; erken denemeler yalnızca hız limitinize yaklaştırır.

    "Too many certificates already issued" (hız limiti)#

    Let's Encrypt, kötüye kullanımı önlemek için sertifika verme sayısına sınır koyar. Örneğin birebir aynı sertifika kombinasyonu, kayan 7 günlük pencerede haftada en fazla 5 kez yenilenebilir; kayıtlı alan adı başına verilen toplam sertifika sayısı için de ayrı bir üst sınır vardır. Kurulumu deneyip yanlış komutları tekrar tekrar çalıştırırken bu limitlere takılmamak için staging (test) ortamını kullanın:

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

    Staging ortamından gelen sertifikalar tarayıcıda güvenilir görünmez, çünkü test amaçlı bir kök tarafından imzalanır; ancak tüm akışı gerçek limitlere dokunmadan denemenizi sağlar. Her şeyin çalıştığından emin olunca --staging bayrağını kaldırıp komutu tekrar çalıştırarak gerçek sertifikayı alırsınız.

    "The requested nginx plugin does not appear to be installed"#

    Certbot'u apt ile kurup Nginx eklentisini ayrıca yüklemeyi atladıysanız bu hatayı görürsünüz. Çözüm: sudo apt install python3-certbot-nginx komutunu çalıştırıp eklentiyi tamamlayın. Snap kurulumunda bu eklenti zaten dahildir; iki kurulum yöntemini karıştırmaktan kaçının, aksi halde hangi Certbot'un çalıştığı belirsizleşir.

    Sertifika yenilendi ama site hâlâ eski sertifikayı gösteriyor#

    Web sunucusu, belleğe alınmış eski sertifikayı sunmaya devam ediyordur. Yenileme sonrası servisin yeniden yüklendiğinden emin olun: cron ya da timer üzerinde --post-hook ile reload ayarladığınızı doğrulayın, ya da elle sudo systemctl reload nginx (Apache'de reload apache2) komutunu çalıştırın.

    Sıkça Sorulan Sorular#

    Let's Encrypt sertifikası gerçekten tamamen ücretsiz mi?#

    Evet. Let's Encrypt sertifikaları hem ilk alım hem de sonraki yenilemelerde tamamen ücretsizdir; gizli bir abonelik, süreli deneme ya da sonradan çıkan bir ödeme adımı yoktur. Hizmet, kâr amacı gütmeyen ISRG tarafından işletilir ve altyapı maliyetleri kurumsal sponsorlar ile bağışlarla karşılanır. Yani ödemeniz gereken tek "bedel" birkaç dakikalık kurulum çabasıdır.

    Sertifikanın 90 günde bir dolması sorun değil mi?#

    Otomatik yenilemeyi kurduysanız hayır, hiç sorun değildir. Certbot'un zamanlayıcısı, süresi dolmaya 30 günden az kalan sertifikaları siz hiçbir şey yapmadan arka planda yeniler. Aslında bu kısa geçerlilik süresi güvenlik açısından bir avantajdır: bir özel anahtar sızdırılsa bile onun kullanılabileceği pencere en fazla birkaç ayla sınırlı kalır, ömür boyu geçerli bir açık oluşmaz.

    Let's Encrypt ile joker (wildcard) sertifika alabilir miyim?#

    Evet, *.ornek.com gibi joker sertifikalar desteklenir; ancak bunlar yalnızca DNS-01 doğrulaması ile alınabilir, HTTP-01 ile alınamaz. Bunun için DNS sağlayıcınızın API'sini konuşan bir Certbot eklentisi kurar ve komuta --preferred-challenges dns bayrağını eklersiniz. Bu sayede tek sertifikayla blog.ornek.com, panel.ornek.com gibi tüm alt alan adlarını kapsayabilirsiniz.

    Let's Encrypt ile ücretli SSL arasındaki fark nedir?#

    Let's Encrypt yalnızca alan adı doğrulaması (DV) yapar; sunduğu şifreleme gücü, ücretli DV sertifikalarınınkiyle birebir aynıdır. Ücretli sertifika otoriteleri ise ek olarak kurumsal kimlik doğrulaması (OV/EV), maddi garanti poliçeleri ve bazı durumlarda daha uzun geçerlilik süreleri sunar. Bu ek katmanlar çoğu site için gerekli olmasa da, kurulumla hiç uğraşmadan hazır gelen bir çözüm arıyorsanız SSL hizmetlerimize göz atabilirsiniz.

    Aynı sunucuda birden fazla alan adı için sertifika alabilir miyim?#

    Kesinlikle. Her alan adı için ayrı bir certbot komutu çalıştırabilir ya da tek komutta birden çok -d bayrağı vererek bunları tek sertifikada birleştirebilirsiniz. Certbot her sertifikayı bağımsız bir yapılandırma olarak takip eder ve hepsini aynı zamanlayıcı üzerinden yeniler; ayrı ayrı yenileme kurmanıza gerek kalmaz.

    Certbot yapılandırmamı bozarsa geri alabilir miyim?#

    Evet. Certbot, web sunucusu yapılandırmasında değişiklik yapmadan önce dosyaların yedeğini /etc/letsencrypt/ altında saklar ve son işlemi tersine çevirmek için sudo certbot rollback komutunu sunar. Bir sertifikayı ve ilgili kayıtları tamamen kaldırmak isterseniz de sudo certbot delete --cert-name ornek.com komutunu kullanabilirsiniz.

    Kapanış#

    Let's Encrypt ve Certbot ikilisiyle, birkaç komut ve sıfır maliyetle sitenizi HTTPS'e taşıyabilir, otomatik yenileme sayesinde sertifika süresini bir daha aklınıza getirmek zorunda kalmazsınız. Süreç boyunca dikkat etmeniz gereken üç kritik nokta şudur: DNS kaydının doğru IP'yi göstermesi, 80 ve 443 portlarının dışarıya açık olması ve certbot renew --dry-run ile yenilemeyi baştan doğrulamak. Bu üçünü sağladığınızda geri kalanı zaten kendiliğinden yürür.

    Sunucu yönetimiyle tek tek uğraşmak yerine SSL'in altyapı tarafında hazır geldiği bir kurulumu tercih ederseniz, WordPress ve web hosting paketlerimizde ücretsiz SSL zaten dahildir. Kendi sunucunuzu yönetmeyi sevenler içinse VDS ve sanal sunucu seçeneklerimizde bu rehberdeki adımları aynen uygulayabilirsiniz. Bir noktada takılırsanız destek ekibimiz kurulumda yardımcı olmaktan memnuniyet duyar.

    Let's EncryptCertbotSSL

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.