SSL sertifikası kurulumu, sitenizle ziyaretçi arasındaki trafiği şifreleyerek adres çubuğunda kilit simgesinin çıkmasını sağlar. İşlem üç adımdan oluşur: sertifikayı temin etmek, sunucuya yüklemek ve tüm HTTP isteklerini kalıcı olarak HTTPS’e yönlendirmek. Paylaşımlı hostingte cPanel’in AutoSSL özelliğiyle tek tıkla, kendi sunucunuzda Certbot ile tek komutla halledilir.
Bu rehberde ücretsiz Let’s Encrypt sertifikasının kurulumunu, ücretli sertifika satın aldıysanız CSR üretip yükleme adımlarını, Nginx ve Apache yapılandırmalarını, en sık karşılaşılan karma içerik sorununu ve sertifika yenileme hatalarının çözümünü bulacaksınız.
SSL, TLS ve HTTPS Arasındaki Fark#
Günlük konuşmada hepsine “SSL” denir ama teknik olarak durum şudur: SSL protokolünün tüm sürümleri (2.0, 3.0) güvenlik açıkları nedeniyle terk edilmiştir. Bugün gerçekte kullanılan protokolün adı TLS’tir. HTTPS ise, HTTP protokolünün TLS üzerinden taşınmış halidir.
| Protokol | Durum | Açıklama |
|---|---|---|
| SSL 2.0 / 3.0 | Kapatın | POODLE ve benzeri açıklar; hiçbir tarayıcı desteklemiyor |
| TLS 1.0 / 1.1 | Kapatın | 2020’den beri tarayıcılarda devre dışı |
| TLS 1.2 | Açık kalsın | Eski istemciler için hâlâ gerekli |
| TLS 1.3 | Öncelikli | Daha hızlı el sıkışma, daha az tur, zayıf şifre paketleri elenmiş |
Sunucu yapılandırmanızda yalnızca TLS 1.2 ve 1.3 açık olmalıdır. Eski protokolleri açık bırakmak PCI-DSS gibi uyumluluk denetimlerinde de sorun çıkarır.
Sertifika Türleri: DV, OV, EV ve Wildcard#
Sertifikaları birbirinden ayıran şey şifreleme gücü değil, sertifika otoritesinin sizi ne kadar doğruladığıdır.
- DV (Domain Validation)
- Yalnızca alan adının sizin kontrolünüzde olduğu doğrulanır. Dakikalar içinde verilir. Let’s Encrypt bu türdendir. Blog, kurumsal tanıtım sitesi ve çoğu e-ticaret sitesi için yeterlidir.
- OV (Organization Validation)
- Şirketin ticari kaydı da doğrulanır, sertifika detayında firma adı görünür. Kurumsal siteler ve bankacılık dışı finansal hizmetler tercih eder. Birkaç iş günü sürer.
- EV (Extended Validation)
- En kapsamlı doğrulama. Tarayıcılar artık yeşil adres çubuğu göstermediği için görsel avantajı büyük ölçüde kalmadı; ağırlıklı olarak uyumluluk gereği alınır.
- Wildcard
*.alanadi.combiçiminde tüm birinci seviye alt alan adlarını kapsar.a.b.alanadi.comgibi iki seviyeli adları kapsamaz.- Multi-Domain (SAN/UCC)
- Tek sertifikada birbirinden farklı alan adları taşır. Birden çok siteyi aynı sunucuda barındıranlar için pratiktir.
Yöntem 1: cPanel’de AutoSSL ile Kurulum#
Paylaşımlı hosting kullanıyorsanız bu en kısa yoldur. AutoSSL, hesabınızdaki tüm alan ve alt alan adlarına otomatik sertifika verir ve süresi dolmadan yeniler.
-
Alan adının sunucuya yöneldiğini doğrulayın#
AutoSSL, alan adının gerçekten bu sunucuya baktığını HTTP üzerinden kontrol eder. A kaydı başka bir IP’yi gösteriyorsa doğrulama başarısız olur. Kayıt yapısını DNS kayıtları rehberinden kontrol edebilirsiniz.
-
SSL/TLS Status ekranını açın#
cPanel ana ekranında “Security” bölümündeki SSL/TLS Status simgesine tıklayın. Alan adlarınız listelenir; sertifikasız olanların yanında kırmızı bir uyarı görürsünüz.
-
Run AutoSSL düğmesine basın#
Kapsamak istediğiniz alan adlarını işaretleyip Run AutoSSL düğmesine tıklayın. İşlem birkaç dakika sürer, sayfayı yenileyerek durumu izleyin.
-
HTTPS’i test edin#
Tarayıcıda
https://alanadiniz.comadresini açın. Kilit simgesi çıkıyorsa sertifika tarafı bitmiştir; sırada yönlendirme var.
Panelin diğer bölümlerini de tanımak isterseniz cPanel kullanım rehberi sayfasına bakın.
Yöntem 2: Kendi Sunucunuzda Certbot ile Let’s Encrypt#
Kök erişiminiz olan bir VDS ya da dedicated sunucuda Certbot kullanılır. Certbot, sertifikayı alır, web sunucusu yapılandırmasını düzenler ve yenilemeyi zamanlar.
-
Certbot (resmî site)ÜcretsizAç
-
Let’s Encrypt (sertifika otoritesi)Aç
-
PuTTY (Windows’tan SSH bağlantısı)İndir
Sunucuya SSH ile bağlanmayı bilmiyorsanız önce SSH bağlantı rehberini okuyun.
Ubuntu / Debian + Nginx#
# Certbot ve Nginx eklentisini kur
sudo apt update
sudo apt install -y certbot python3-certbot-nginx
# Sertifikayı al ve Nginx yapılandırmasını otomatik düzenle
sudo certbot --nginx -d alanadiniz.com -d www.alanadiniz.com
# Otomatik yenilemeyi test et (gerçek sertifika almaz)
sudo certbot renew --dry-run
Apache kullanıyorsanız paket adı python3-certbot-apache, komut da sudo certbot --apache -d alanadiniz.com olur. AlmaLinux veya Rocky Linux’ta paket yöneticisi dnf’tir:
sudo dnf install -y epel-release
sudo dnf install -y certbot python3-certbot-nginx
sudo certbot --nginx -d alanadiniz.com -d www.alanadiniz.com
sudo ufw allow 'Nginx Full' komutu ikisini birden açar; ayrıntı için güvenlik duvarı yapılandırması sayfasına bakın.Wildcard sertifika (DNS-01 doğrulaması)#
*.alanadiniz.com gibi bir wildcard sertifika istiyorsanız HTTP doğrulaması yetmez; DNS bölgenize bir TXT kaydı eklemeniz gerekir:
sudo certbot certonly --manual --preferred-challenges dns \
-d alanadiniz.com -d "*.alanadiniz.com"
Certbot size _acme-challenge.alanadiniz.com adında bir TXT kaydı ve değeri verir. Bu kaydı DNS panelinize ekleyin, yayılmasını bekleyin ve Enter’a basın. Manuel yöntemde otomatik yenileme çalışmaz; her 90 günde bir işlemi tekrarlamanız ya da sağlayıcınızın DNS API eklentisini kullanmanız gerekir.
Nginx ve Apache Yapılandırması#
Certbot yapılandırmayı otomatik yazar ama elle düzenlemek isterseniz doğru bir Nginx sunucu bloğu şuna benzer:
server {
listen 80;
listen [::]:80;
server_name alanadiniz.com www.alanadiniz.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name alanadiniz.com www.alanadiniz.com;
ssl_certificate /etc/letsencrypt/live/alanadiniz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/alanadiniz.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
root /var/www/alanadiniz.com;
index index.php index.html;
}
Apache tarafında aynı iş sanal konak dosyasında yapılır. Değişiklikten sonra yapılandırmayı test edip servisi yeniden yükleyin:
# Nginx
sudo nginx -t && sudo systemctl reload nginx
# Apache (Ubuntu/Debian)
sudo apache2ctl configtest && sudo systemctl reload apache2
# Sertifikanın son geçerlilik tarihini gör
sudo certbot certificates
HTTP’den HTTPS’e Kalıcı Yönlendirme#
Sertifika kurulduktan sonra site hem http:// hem https:// ile açılmaya devam eder. Arama motorları bunu iki ayrı sürüm olarak görür ve içerik tekrarı sayar. Çözüm 301 yönlendirmedir.
Apache veya LiteSpeed kullanan paylaşımlı hostingte .htaccess dosyasının en üstüne:
<IfModule mod_rewrite.c>
RewriteEngine On
# HTTP -> HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# www olmayan sürüme sabitle (tercihe bağlı)
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
</IfModule>
Karma İçerik (Mixed Content) Sorununu Çözme#
Sertifika kurulduğu halde kilit simgesi çıkmıyorsa suçlu neredeyse her zaman karma içeriktir. Sayfa HTTPS ile geliyor ama içindeki bir görsel, CSS, JavaScript veya iframe hâlâ http:// adresini çağırıyordur. Tarayıcı bunu güvenlik ihlali sayar ve kilidi kaldırır.
Tespit için tarayıcıda F12 ile geliştirici araçlarını açın ve Console sekmesindeki “Mixed Content” satırlarını okuyun; hangi dosyanın sorun çıkardığını doğrudan yazar.
WordPress kullanıyorsanız veritabanındaki eski adresleri toplu değiştirmek gerekir. Doğrudan SQL ile yapmak serileştirilmiş verileri bozabileceği için önce yedek alın:
# Önce yedek
mysqldump -u wp_user -p wp_site > /yedek/oncesi.sql
# WP-CLI ile güvenli toplu değiştirme (serileştirilmiş veriyi doğru işler)
wp search-replace 'http://alanadiniz.com' 'https://alanadiniz.com' --all-tables --precise
# Önbelleği temizle
wp cache flush
Kurulum sürecinin tamamını görmek isterseniz WordPress kurulumu sayfasındaki SSL bölümü bu adımı tamamlar.
HSTS ve Ek Güvenlik Başlıkları#
HSTS (HTTP Strict Transport Security), tarayıcıya “bu siteye bir daha asla HTTP ile bağlanma” demenizi sağlar. Yönlendirme adımını tamamen atlatır ve araya girme saldırılarını zorlaştırır.
# Apache / .htaccess
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
max-age=31536000 bir yıl demektir; sertifikanız bozulursa ziyaretçilerin tarayıcısı bir yıl boyunca sitenizi HTTP ile açmayı reddeder ve uyarıyı atlama seçeneği sunmaz. Test aşamasında max-age=300 ile başlayın.Yenileme Sorunları ve Sık Görülen Hatalar#
| Hata / Belirti | Sebep | Çözüm |
|---|---|---|
| NET::ERR_CERT_COMMON_NAME_INVALID | Sertifika farklı bir alan adı için verilmiş | Sertifikayı doğru alan adı ve www varyantıyla yeniden alın |
| NET::ERR_CERT_DATE_INVALID | Sertifikanın süresi dolmuş veya sunucu saati yanlış | certbot renew çalıştırın; timedatectl ile saati kontrol edin |
| NET::ERR_CERT_AUTHORITY_INVALID | Ara sertifika (chain) eksik | cert.pem yerine fullchain.pem kullanın |
| Challenge failed: connection refused | 80 portu kapalı ya da başka servis dinliyor | Güvenlik duvarında 80’i açın, sudo ss -tlnp | grep :80 ile kontrol edin |
| Too many certificates already issued | Let’s Encrypt haftalık limitine takıldınız | Bir hafta bekleyin; test için --dry-run ya da staging ortamı kullanın |
| Yönlendirme döngüsü (ERR_TOO_MANY_REDIRECTS) | Ters vekil sunucu HTTPS’i sonlandırıyor, uygulama HTTP görüyor | X-Forwarded-Proto başlığını ilet ve uygulamada bunu okut |
| Alt alan adında sertifika yok | Sertifika yalnızca ana alan adını kapsıyor | Alt alan adını -d ile ekleyin ya da wildcard alın |
Sunucu tarafındaki sertifika sağlığını düzenli izlemek isterseniz monitoring araçlarına sertifika süresi kontrolü ekleyebilirsiniz; Uptime Kuma bu kontrolü hazır sunar ve süre 14 günün altına indiğinde uyarı gönderir.
Kurulumu Doğrulama#
Sertifikayı kurduktan sonra üç kontrol yapın:
-
Zincir ve protokol testi#
Komut satırından hızlı kontrol:
openssl s_client -connect alanadiniz.com:443 -servername alanadiniz.com. ÇıktıdaVerify return code: 0 (ok)görmelisiniz. -
Yönlendirme testi#
curl -I http://alanadiniz.comkomutuHTTP/1.1 301 Moved PermanentlyveLocation: https://...döndürmeli. 302 dönüyorsa kuralınızı düzeltin. -
Karma içerik taraması#
Ana sayfa, bir iç sayfa ve varsa ödeme sayfasını geliştirici konsolu açıkken gezin. Tek bir “Mixed Content” uyarısı bile kalmamalı.
HTTPS’e geçtikten sonra sitenizin hız değerleri de değişir: HTTP/2 ve HTTP/3 devreye girdiği için genellikle iyileşir. Ölçümü Core Web Vitals optimizasyonu sayfasındaki yöntemlerle yapabilirsiniz.
Özetle#
SSL kurulumu artık zor ya da pahalı bir iş değil. Paylaşımlı hostingte AutoSSL bir tıklama, kendi sunucunuzda Certbot tek komut. Kritik noktalar şunlar: yalnızca TLS 1.2 ve 1.3 açık kalsın, fullchain.pem kullanın, 80 portunu doğrulama için açık tutun ve HTTP’den HTTPS’e mutlaka 301 yönlendirme verin.
Kurulumdan sonra kilit çıkmıyorsa sertifikayı değil sayfa kaynaklarını kontrol edin; sorun neredeyse her zaman karma içeriktir. Her şey oturduğunda HSTS başlığını ekleyip yapılandırmayı tamamlayabilirsiniz. Sunucu tarafında kök erişimi olan bir ortama ihtiyaç duyarsanız VDS paketleri üzerinden ilerleyebilirsiniz.