
HTTPS Sertifika Yenileme Sorunları: Yaygın Hatalar ve Çözümleri
SSL sertifika yenileme sorunları ve çözümleri. Certbot yenileme hataları, DNS doğrulama sorunları, cPanel AutoSSL hataları ve sertifika izin sorunları.
HTTPS Sertifika Yenileme Sorunları: Yaygın Hatalar ve Çözümleri
Let's Encrypt sertifikaları 90 gün geçerlidir ve otomatik yenileme başarısız olursa siteye erişim engellenir. Bu rehberde en yaygın yenileme sorunları ve çözümleri ele alınmaktadır.
Certbot Yenileme Testi
# Dry run ile yenilemeyi test et
certbot renew --dry-run
# Belirli sertifika yenile
certbot renew --cert-name sitem.com --dry-run
# Zorla yenile (süre dolmamış olsa bile)
certbot renew --force-renewal --cert-name sitem.com
Hata 1: Port 80 Erişilemiyor
Problem: Error: Challenge failed for domain sitem.com
Connect to port 80 connection refused
Çözüm:
# Güvenlik duvarı kontrolü
firewall-cmd --list-ports
ufw status
# Port 80 aç
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
# veya
ufw allow 80
# Nginx/Apache çalışıyor mu?
systemctl status nginx
systemctl status apache2
# Port dinleniyor mu?
ss -tlnp | grep :80
Hata 2: .well-known Klasörü Erişilemiyor
Error: 404 Not Found fetching /.well-known/acme-challenge/...
Nginx çözümü:
# Server bloğuna ekleyin
location /.well-known/acme-challenge/ {
root /var/www/html;
allow all;
}
Apache çözümü:
<Directory /var/www/html/.well-known>
Options None
AllowOverride None
Require all granted
</Directory>
# .htaccess yönlendirmesini geçici devre dışı bırakın
# RewriteRule ^ https://... satırını yorum satırına alın
Hata 3: DNS Doğrulama Başarısız (Wildcard)
DNS problem: NXDOMAIN looking up TXT for _acme-challenge.sitem.com
Çözüm:
# DNS TXT kaydını doğru eklediğinizden emin olun
# Yayılma süresini bekleyin (TTL)
# DNS kaydını kontrol et
dig TXT _acme-challenge.sitem.com
nslookup -type=TXT _acme-challenge.sitem.com
# Propagasyon testi
# https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.sitem.com
Hata 4: Rate Limit Aşımı
Error: too many certificates already issued
for exact set of domains in the last 168 hours
Çözüm:
# Let's Encrypt rate limit: haftalık 5 sertifika
# Mevcut sertifika varsa yenilemeye gerek yok
# Mevcut sertifika durumu
certbot certificates
# Yeterli süre kalmışsa yenileme gerekmez
# Staging ortamında test edin (rate limit yok)
certbot renew --dry-run --staging
Hata 5: Dosya İzin Sorunu
Error: [Errno 13] Permission denied: '/etc/letsencrypt/...'
Çözüm:
# Certbot'un sahipliğini düzelt
chown -R root:root /etc/letsencrypt/
chmod 755 /etc/letsencrypt/
chmod 755 /etc/letsencrypt/live/
chmod 755 /etc/letsencrypt/archive/
chmod 644 /etc/letsencrypt/live/sitem.com/fullchain.pem
chmod 600 /etc/letsencrypt/live/sitem.com/privkey.pem
Hata 6: OCSP Stapling Hatası (Nginx)
nginx: [warn] "ssl_stapling" ignored, issuer certificate not found
Çözüm:
# chain.pem kullanın (fullchain.pem değil)
ssl_trusted_certificate /etc/letsencrypt/live/sitem.com/chain.pem;
# veya OCSP stapling devre dışı bırakın
ssl_stapling off;
Hata 7: Sertifika Zinciri (Chain) Eksik — "Not Trusted" Uyarısı
Error: unable to get local issuer certificate
SSL_ERROR_UNKNOWN_CA (Firefox)
Neden: Web sunucusuna yalnızca leaf (uç) sertifika yüklenmiş, ara (intermediate) sertifika eksik kalmış. Chrome masaüstünde çoğu zaman fark edilmez çünkü tarayıcı AIA (Authority Information Access) ile eksik ara sertifikayı arka planda kendisi indirir; ama Firefox, eski Android tarayıcıları, mail sunucuları ve curl/webhook gibi CLI istemcileri bu toleransa sahip değildir ve bağlantıyı doğrudan reddeder. Bu yüzden "sitem tarayıcıda düzgün açılıyor ama API entegrasyonu SSL hatası veriyor" şikayetlerinin en sık nedeni budur.
Çözüm:
# fullchain.pem kullanıldığından emin olun (cert.pem DEĞİL)
ssl_certificate /etc/letsencrypt/live/sitem.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/sitem.com/privkey.pem;
# Zincirin eksiksiz olduğunu doğrulayın
openssl verify -CAfile /etc/letsencrypt/live/sitem.com/chain.pem \
/etc/letsencrypt/live/sitem.com/cert.pem
# Sunucudan dönen zinciri canlı test edin
echo | openssl s_client -connect sitem.com:443 -servername sitem.com -showcerts 2>/dev/null \
| grep -E "^subject|^issuer|^ -----BEGIN"
Çıktıda leaf sertifikadan sonra en az bir ara CA satırı (Let's Encrypt için R3, R10, R11 gibi) görünmelidir. Görünmüyorsa ssl_certificate direktifinde yanlışlıkla cert.pem yüklenmiş demektir; fullchain.pem ile değiştirip servisi reload edin.
ACME CA Alternatifleri (Let's Encrypt Tek Seçenek Değil)
Let's Encrypt rate limit, downtime veya politika sebepleriyle alternatif ACME-uyumlu CA'lara geçişi mümkün:
| CA | Avantaj | Dezavantaj |
|---|---|---|
| Let's Encrypt | En yaygın, ücretsiz, 90 gün | Rate limit (haftada 50/domain) |
| ZeroSSL | 90 günlük ücretsiz, dashboard, EV opsiyonu | Daha az araç desteği |
| Buypass Go SSL | Norveç tabanlı, 180 gün geçerlilik | Daha az client desteği |
| Alternatif ücretsiz CA servisleri | ZeroSSL ve diğer ACME-uyumlu CA seçenekleri | API key gerek, kotalar değişken |
| Sectigo (paid) | OV/EV dahil, 1-2 yıl geçerlilik | Yıllık ücret |
# ZeroSSL ACME endpoint'i
certbot --server https://acme.zerossl.com/v2/DV90 \
--eab-kid <ZEROSSL_KID> --eab-hmac-key <ZEROSSL_KEY> \
-d sitem.com
# Buypass
certbot --server https://api.buypass.com/acme/directory \
--agree-tos -m mail@sitem.com -d sitem.com
Pratik tavsiye: Production'da iki CA ile fallback kurulumu — Let's Encrypt rate limit'e takılırsa otomatik ZeroSSL devreye girer. Karmaşıklık katar; sadece hayati önemde sitelerde mantıklı.
DNS-01 Plugin'leri — Wildcard ve Otomasyon
DNS-01 challenge wildcard zorunluluğu için gerekli. Manuel TXT kaydı eklemek yerine DNS provider plugin'i otomatik yapsın:
| Provider | Plugin Paketi | Wildcard | Comment |
|---|---|---|---|
| Cloudflare | python3-certbot-dns-cloudflare |
✅ | En popüler, API token ile |
| API destekli DNS sağlayıcı | python3-certbot-dns-<saglayici> |
✅ | Sağlayıcının API token / key'i |
| Generic (RFC 2136) | python3-certbot-dns-rfc2136 |
✅ | TSIG + BIND/PowerDNS |
# Cloudflare örneği
apt install python3-certbot-dns-cloudflare
# /etc/letsencrypt/cloudflare.ini
dns_cloudflare_api_token = <SCOPED_TOKEN>
chmod 600 /etc/letsencrypt/cloudflare.ini
certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d sitem.com -d "*.sitem.com" \
--preferred-challenges dns-01
⚠️ Token scoped olmalı (Zone:DNS:Edit + Zone:Zone:Read sadece ilgili zone'a). Global API key tehlike.
.com.tr / .org.tr ve Türk Tescil Firmaları
Bazı Türk registrarlarda DNS-01 doğrulaması için manuel TXT kaydı gerekir; certbot --manual --preferred-challenges dns ile interaktif çalışırsınız. Pratik çözüm: DNS'i Cloudflare'e (veya başka API destekli sağlayıcıya) devredip (NS değişikliği) otomasyonu açmak.
Plesk Panelinde Let's Encrypt Yenileme
Büyükweb VDS paketlerinde panel kurulumu ücretsizdir ve Plesk lisansı pakete dahildir; Plesk'in yerleşik Let's Encrypt uzantısı sertifika alma ve yenileme işini komut satırına inmeden panel üzerinden otomatikleştirir.
Plesk üzerinden kontrol adımları:
- Websites & Domains → SSL/TLS Certificates ekranına girin.
- "Let's Encrypt" sağlayıcısını seçip domain +
wwwalt alan adını işaretleyin. - "Secure the domain" ile birlikte "Secure webmail" seçeneğini de işaretlemek mail arayüzünü aynı sertifikayla kapsar.
- Otomatik yenileme varsayılan olarak açıktır; yenileme sıklığı Domains → SSL/TLS Certificates → Settings üzerinden ayarlanabilir.
Komut satırından durum kontrolü (Plesk kurulu VDS'te):
plesk bin extension --exec letsencrypt cli.php list -domain sitem.com
Yenileme başarısız olursa Plesk panelinde ilgili domain kartında kırmızı uyarı ikonu belirir; ayrıntılı log Tools & Settings → SSL/TLS Certificates → Logs altında incelenebilir. cPanel lisansı isteyen kullanıcılar için Büyükweb VDS paketlerinde cPanel de ücretli ek seçenek olarak eklenebilir; bu durumda aşağıdaki AutoSSL bölümü geçerli olur.
Otomatik Yenileme Yapılandırması
# systemd timer kontrolü
systemctl status certbot.timer
systemctl list-timers | grep certbot
# Manuel cron kurulumu
crontab -e
# 0 3 * * * certbot renew --quiet --post-hook "systemctl reload nginx"
# Yenileme sonrası servis yenileme
# /etc/letsencrypt/renewal/sitem.com.conf
[renewalparams]
post_hook = systemctl reload nginx
Renewal Sonrası Deploy Hook — Çoklu Servisi Yenile
Sertifika yenilendiğinde sadece web sunucu değil, sertifikayı kullanan tüm servisleri restart/reload etmek gerekir.
# /etc/letsencrypt/renewal-hooks/deploy/multi-service.sh
#!/bin/bash
# Bu script her başarılı yenileme sonrasında çalışır
# Hangi domain yenilendi: $RENEWED_DOMAINS
# Hangi sertifika: $RENEWED_LINEAGE
# Web sunucu
systemctl reload nginx 2>/dev/null || systemctl reload apache2
# Mail server
systemctl restart postfix
systemctl restart dovecot
# FTP (opsiyonel)
systemctl restart pure-ftpd 2>/dev/null
# Application server (opsiyonel)
systemctl reload php8.2-fpm
systemctl restart node-app
# Monitoring/log
echo "$(date): SSL yenilendi: $RENEWED_DOMAINS" >> /var/log/ssl-renewals.log
# Slack/Discord bildirimi
curl -X POST -H 'Content-type: application/json' \
-d "{\"text\":\":lock: SSL yenilendi: $RENEWED_DOMAINS\"}" \
<slack_webhook_url>
chmod +x /etc/letsencrypt/renewal-hooks/deploy/multi-service.sh
renewal-hooks üç tip dizin sunar:
pre/— yenilemeden ÖNCE (ör. backup)post/— yenilemeden SONRA (her zaman)deploy/— sadece başarılı yenilemede (servis reload için doğru yer)
Çoklu Sertifika için Spesifik Hook
# /etc/letsencrypt/renewal/sitem.com.conf
[renewalparams]
deploy_hook = systemctl reload nginx; systemctl restart postfix
Yenileme İzleme + Downtime'sız Geçiş
Healthchecks.io ile Cron Monitoring
# /etc/cron.d/certbot-renewal
0 3 * * * root certbot renew --quiet && curl -fsS https://hc-ping.com/<UUID> > /dev/null
Bu yapı: cron her gün 03:00'da yenilemeyi dener; başarılı olduğunda Healthchecks.io'a ping atar. Ping gelmezse 24 saat içinde Healthchecks size mail/Slack uyarısı gönderir → yenileme bozuk demektir.
Cron Tabanlı Süre Uyarı Script'i
#!/bin/bash
# /usr/local/bin/ssl-warn.sh
# Sertifikası 14 günden az kalanlar için uyarı
EXPIRY=$(echo | openssl s_client -connect sitem.com:443 2>/dev/null | \
openssl x509 -noout -enddate | cut -d= -f2)
EXPIRY_EPOCH=$(date -d "$EXPIRY" +%s)
NOW_EPOCH=$(date +%s)
DAYS_LEFT=$(( (EXPIRY_EPOCH - NOW_EPOCH) / 86400 ))
if [ $DAYS_LEFT -lt 14 ]; then
echo "UYARI: sitem.com sertifikası $DAYS_LEFT gün sonra dolacak!" | \
mail -s "SSL Uyarı: sitem.com" admin@sitem.com
fi
Downtime'sız Yenileme — Reload vs Restart
| İşlem | Etki |
|---|---|
nginx -s reload |
✅ Yeni config + sertifika anında, mevcut bağlantı korunur |
systemctl reload nginx |
✅ Yukarıdakiyle aynı |
systemctl restart nginx |
⚠️ ~1-3 sn downtime |
apache2 graceful |
✅ Apache eşdeğeri |
Always reload, never restart — yenileme hook'unda reload kullanın.
Stand-by Sertifika Stratejisi
Dual-cert: new ve current ikisi de canlıda. Yenileme new üzerinden tetiklenir, doğrulanır, ardından atomic symlink swap ile current'a geçilir:
ln -sfn /etc/letsencrypt/live/sitem.com.new /etc/letsencrypt/live/sitem.com.current
nginx -s reload
Symlink swap atomik, sıfır downtime.
Çoklu Domain (SAN) Sertifika Yönetimi
Tek sertifika ile birden fazla domain/subdomain kapsanabilir (SAN — Subject Alternative Name). Certbot'ta -d bayrağı tekrarlanarak eklenir:
certbot certonly --nginx \
-d sitem.com -d www.sitem.com \
-d mail.sitem.com -d panel.sitem.com
Domain eklemek/çıkarmak isterseniz mevcut lineage'i --expand ile güncelleyin; bu yeni bir sertifika ismi/dizini oluşturmaz, mevcut lineage'i büyütür:
certbot certonly --nginx --expand \
-d sitem.com -d www.sitem.com -d yeni.sitem.com
⚠️ Tek SAN sertifikadaki domain sayısı arttıkça her yenilemede tüm domainlerin doğrulaması aynı anda başarılı olmak zorundadır — bir alt alan adının DNS/HTTP challenge'ı başarısız olursa sertifikanın tamamı yenilenemez, çalışan tüm domainler de riske girer. 5'ten fazla domain/subdomain varsa domain başına ayrı sertifika (veya mantıksal gruplama, örn. www+mail ayrı, panel+api ayrı) daha dayanıklı bir mimari sağlar.
cPanel AutoSSL Sorunları
# cPanel → Security → SSL/TLS Status → Run AutoSSL
# Yaygın AutoSSL hataları:
# 1. Domain cPanel sunucusunu göstermiyor (DNS yanlış)
# 2. CAA kaydı Let's Encrypt'i engelliyor
# 3. .well-known erişim engeli
# CAA kaydı kontrolü
dig CAA sitem.com
# CAA kaydı ekleyin (gerekirse)
sitem.com. CAA 0 issue "letsencrypt.org"
Sertifika Süre Kontrolü
# Sertifika son kullanma tarihi
echo | openssl s_client -connect sitem.com:443 2>/dev/null | openssl x509 -noout -dates
# Çoklu domain kontrolü için script
for domain in sitem1.com sitem2.com sitem3.com; do
echo -n "$domain: "
echo | openssl s_client -connect $domain:443 2>/dev/null | openssl x509 -noout -enddate
done
Büyükweb cPanel hosting paketlerinde AutoSSL otomatik çalışır. Sorun yaşarsanız destek ekibimize ticket ile ulaşabilirsiniz.
Hızlı Referans: Hata → Çözüm Tablosu
Yukarıdaki tüm senaryoları tek bakışta görmek isteyenler için özet tablo:
| Hata Mesajı / Belirti | Olası Sebep | Hızlı Çözüm |
|---|---|---|
Connect to port 80 connection refused |
Firewall port 80'i engelliyor | ufw allow 80 veya firewall-cmd --add-service=http |
404 Not Found /.well-known/acme-challenge/ |
Nginx/Apache location bloğu eksik | .well-known için location/Directory bloğu ekle |
NXDOMAIN TXT _acme-challenge |
DNS TXT kaydı eklenmemiş/yayılmamış | dig TXT ile doğrula, TTL süresini bekle |
too many certificates already issued |
Rate limit (haftalık 5) aşıldı | --staging ile test et, mevcut sertifikayı koru |
Permission denied: /etc/letsencrypt/... |
Dosya sahiplik/izin bozulmuş | chown root:root + doğru chmod değerleri |
ssl_stapling ignored, issuer certificate not found |
chain.pem yerine fullchain.pem kullanılmış |
ssl_trusted_certificate direktifini chain.pem'e çevir |
unable to get local issuer certificate |
Ara (intermediate) sertifika zinciri eksik | fullchain.pem yükle, openssl verify ile doğrula |
| AutoSSL "domain doesn't resolve" | DNS A kaydı veya CAA kaydı yanlış | dig CAA ve dig A ile domain çözümlemesini kontrol et |
Sertifika Yenileme Sıkça Sorulan Sorular
Sertifika dolduktan kaç saat sonra reissue olur?
Let's Encrypt doluş anında bile reissue mümkün — rate limit hâlâ geçerliyse. certbot certonly --force-renewal --cert-name sitem.com ile zorla yenileyin. Reissue anında geçerli olur, ama tarayıcı cache'inde HSTS varsa user uyarı görebilir.
Sertifika dolduğunda Google sıralamamı düşürür mü?
Doğrudan etki sınırlı, ama dolaylı çok büyük. Tarayıcı uyarısı → bounce rate fırlar → dwell time düşer → sıralama zedelenir. Ayrıca Googlebot SSL hatasıyla karşılaşırsa content erişimini reddedebilir, indeksleme aksar.
Cloudflare arkasındaysam yenilemem gerek mi?
Evet — origin'de mutlaka. Cloudflare "Full strict" SSL modu için origin geçerli sertifika ister. Yalnızca "Flexible" modda gerekmez ama o güvenli değil. Büyükweb hosting AutoSSL otomatik halleder.
Wildcard ve normal sertifika aynı anda alabilir miyim?
Evet — birden fazla sertifika lineage'i. Örnek: sitem.com için DV + *.sitem.com için DNS-01 wildcard. Her ikisi ayrı renewal config'ine sahip, ayrı renewal döngüsü.
Apache mod_md alternatifi nasıl?
Apache 2.4.30+ mod_md (MDomain sitem.com) ile certbot kurulumu olmadan otomatik ACME yenileme yapar. Plain Apache için temiz çözüm; ama mail/FTP gibi ek servis kullanılıyorsa certbot daha esnek.
Yenileme sırasında downtime olur mu?
Doğru yapıldığında 0 saniye. reload komutu mevcut bağlantıları korur, yeni config'i live çekirdeğe enjekte eder. Sadece restart ile downtime gelir; bunu hiç kullanmayın.
CAA kaydı nedir, nasıl kontrol ederim?
CAA (Certificate Authority Authorization) DNS kaydı, hangi CA'nın sertifika verebileceğini belirler. Yanlış CAA → Let's Encrypt başvurusu reddedilir.
dig CAA sitem.com
# Beklenen: 0 issue "letsencrypt.org"
# veya boş (her CA izin var)
certbot /etc/letsencrypt/ taşımak güvenli mi?
Riskli. Sertifika dosyaları + private key + renewal config'leri tam yapı olarak taşınmalı. Tercih: tar -czpf ile tüm dizini sıkıştırıp yeni sunucuya açın, certbot certificates ile doğrulayın. Eksik dosya = bir sonraki renewal başarısız.
Outlook/SMTP postfix sertifika hatası alıyor?
Postfix smtpd_tls_cert_file ve smtpd_tls_key_file Let's Encrypt yolunu işaret etmeli (fullchain.pem + privkey.pem). Sertifika yenilense de postfix reload yoksa yeni dosyayı okumaz. renewal-hooks/deploy/'a systemctl reload postfix ekle.
Yenileme sonrası tarayıcı hâlâ eski sertifikayı/uyarıyı gösteriyor, neden?
Sunucu tarafında yenileme başarılı olsa bile tarayıcının TLS oturum önbelleği eski sertifika bilgisini bir süre saklayabilir. Öncelikle sekmeyi tamamen kapatıp yeniden açın; kalıcıysa tarayıcının SSL durumu önbelleğini temizleyin. Sunucu tarafında ise asıl sebep genelde farklıdır: sertifika dosyası diskte güncellenmiş ama web sunucusu reload edilmemiştir — bu yüzden hâlâ eski dosyayı bellekte tutar. openssl s_client -connect sitem.com:443 -noout ile canlıdaki enddate'i kontrol edip hook'un gerçekten çalıştığından emin olun.
certbot yerine acme.sh gibi alternatif client kullanılır mı?
Evet, ACME protokolü client-bağımsızdır. acme.sh yalnızca shell script olduğu için daha hafiftir ve cron entegrasyonu kolaydır; certbot ise EFF'in resmi aracı olup nginx/apache/DNS plugin ekosistemi daha geniştir. Her ikisi de aynı Let's Encrypt/ZeroSSL altyapısını konuşur; seçim sunucu ortamına ve alışkanlığa göre değişir.
Büyükweb cPanel paketinde AutoSSL ne sıklıkla çalışır?
WHM'de varsayılan 24 saatte bir tarama + 30 gün eşiğinden önce yenileme denemesi. Manuel tetikleme: WHM → SSL/TLS Status → Run AutoSSL. Tüm hesaplarda tek tıkla.
İlgili Büyükweb Hizmetleri
Sunucu ve site güvenliğini ciddiye alanlar için Türkiye Tier III sertifikalı DataCasa veri merkezimizdeki paketler:
- Imunify360 Korumalı Web Hosting
- Tam Yetki VDS Sunucu
- OpenVPN Paketleri
- Datacenter Proxy
- Fiziksel Dedicated Sunucu
Sorularınız için 0850 302 60 70 numaralı satış öncesi destek numaramıza ulaşabilir veya iletişim sayfamıza yazabilirsiniz.
Güvenlik & SSL İlgili Hizmetlerimiz
Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin
Etiketler:



