🔒 SSL/TLS Doğrulaması Nedir ve Nasıl Etkinleştirilir?
Bu rehber, SSL/TLS doğrulamasının nasıl çalıştığını, neden güvenli bağlantılar için hayati olduğunu ve farklı platformlarda nasıl etkinleştirileceğini açıklar.
Ayrıca openssl, curl, Python ve Node.js araçlarıyla SSL doğrulamasını test etmeyi de öğreneceksiniz.
🧠 SSL Doğrulama Nedir?
SSL (Secure Sockets Layer) veya modern haliyle TLS (Transport Layer Security) doğrulaması; istemci ile sunucu arasındaki iletişimin kimliğini, bütünlüğünü ve güvenilirliğini garanti eder.
Bir tarayıcı ya da API istemcisi, HTTPS isteği gönderdiğinde, sunucunun gerçekten iddia ettiği kimlikte olup olmadığını anlamak için çok adımlı bir kontrol süreci başlatır.
🔍 Doğrulama Süreci Adımları
| Adım | Açıklama |
|---|---|
| 1. Sertifika Sunumu | Sunucu, SSL sertifikasını istemciye gönderir. |
| 2. CA Kontrolü | Sertifikanın tanınmış bir Sertifika Yetkilisi (CA) tarafından imzalandığı doğrulanır. |
| 3. Alan Adı Eşleşmesi | Sertifikadaki CN/SAN alanı, erişilen alan adıyla aynı olmalıdır. |
| 4. Sertifika Zinciri Kontrolü | Leaf → Intermediate → Root CA zinciri tam olmalıdır. |
| 5. Süre ve İptal Kontrolü | Sertifika süresi dolmamış ve CA tarafından iptal edilmemiş olmalıdır. |
🚫 Bu adımlardan biri bile başarısız olursa, TLS handshake kesilir ve tarayıcı ERR_CERT_COMMON_NAME_INVALID veya SSL: CERTIFICATE_VERIFY_FAILED gibi uyarılar verir.
🔐 SSL Doğrulaması vs SSL Şifreleme
| Özellik | SSL Doğrulaması | SSL Şifrelemesi |
|---|---|---|
| Amaç | Sunucunun kimliğini onaylamak ve sahteciliği önlemek | Verilerin gizliliğini ve bütünlüğünü korumak |
| Ne Zaman Olur | TLS el sıkışmasının başında | Bağlantı doğrulandıktan sonra |
| Engellediği Risk | Ortadaki Adam (MITM) saldırısı | Veri hırsızlığı ve dinleme (eavesdropping) |
| Sonuç | Kimlik doğrulama sağlanır | Veriler güvenli şekilde iletilir |
💡 İkisi birlikte çalışır. Biri olmadan diğeri güvenliği tamamlayamaz.
🔗 Sertifika Zinciri (Chain of Trust)
SSL sertifikaları, güvenin kökten (Root CA) son kullanıcıya (Leaf Certificate) kadar aktarıldığı bir zincir oluşturur.
| Katman | Görev | Örnek |
|---|---|---|
| Root CA | Güvenin temelidir, işletim sisteminde ön yüklüdür | DigiCert Global Root G2 |
| Ara CA | Sertifikaları imzalar, kök CA’yı korur | Let’s Encrypt R3 |
| Leaf (Sunucu) Sertifikası | Sitenizde kurulu olan sertifikadır | www.rabisu.cloud |
⚠️ Sunucunuz ara sertifikaları göndermezse “Eksik Zincir Hatası” alırsınız (verify return:20).
🧰 Komut Satırıyla SSL Doğrulama Testleri
1️⃣ openssl s_client
openssl s_client -connect rabisu.cloud:443 -servername rabisu.cloud -showcerts
Bu komut, sunucunun sertifika zincirini gösterir. verify return:1 → başarı, verify return:20 → ara sertifika eksik.
2️⃣ curl --verbose
curl https://rabisu.cloud -v
Bağlantı sürecindeki TLS handshake detaylarını gösterir. Başarılıysa şifreleme protokolü görünür, hatalıysa neden belirtilir.
3️⃣ Online Test Araçları
| Araç | Açıklama |
|---|---|
| SSL Labs (ssllabs.com) | SSL yapılandırmanıza not verir, zayıf protokolleri listeler. |
| DigiCert SSL Checker | Ara sertifika ve kurulum hatalarını tespit eder. |
💻 Uygulama Kodunda SSL Doğrulaması
🐍 Python (requests)
import requests
resp = requests.get('https://api.ornek.com', timeout=10)
print(resp.status_code)
requests doğrulamayı varsayılan olarak yapar. Geçersiz sertifika varsa hata verir.
🟢 Node.js (axios)
const axios = require('axios');
const agent = new (require('https').Agent)({ rejectUnauthorized: true });
axios.get('https://api.ornek.com', { httpsAgent: agent })
.then(res => console.log(`Durum: ${res.status}`))
.catch(err => console.error(`Hata: ${err.message}`));
rejectUnauthorized: true ayarıyla SSL doğrulaması zorunlu hale gelir.
🧪 Kendinden İmzalı Sertifikalar (Self-Signed)
Kendinden imzalı sertifikalar yalnızca test veya dahili ağlarda kullanılmalıdır.
| Durum | Güvenli Yaklaşım |
|---|---|
| Üretim Ortamı | Asla kullanma, güvenilir CA’dan sertifika al. |
| Test Ortamı | Sertifikayı sistem trust store’una ekle. |
| Yönetim | Süre ve iptal durumlarını düzenli kontrol et. |
🧠 SSL Doğrulaması İçin En İyi Uygulamalar
| Uygulama | Açıklama |
|---|---|
| Güvenilir CA kullanın | Let’s Encrypt veya ticari CA’lardan sertifika alın. |
| Tam zincir sunun | fullchain.pem dosyasını Nginx/Apache yapılandırmasına ekleyin. |
| Otomatik yenileme | certbot renew --quiet ile yenilemeyi otomatize edin. |
| TLS 1.2+ kullanın | Eski SSL 3.0/TLS 1.0 sürümlerini kapatın. |
| Güvenlik başlıkları ekleyin | HSTS, CSP gibi HTTP header’larını ekleyin. |
🚫 Sık Yapılan Hatalar
| Hata | Etkisi | Çözüm |
|---|---|---|
| Doğrulamayı devre dışı bırakmak | MITM saldırılarına açık hale getirir | Asla verify=False kullanma |
| Yanlış sistem saati | Sertifika geçersiz görünür | NTP senkronizasyonu yap |
| Eksik Ara Sertifika | CERTIFICATE_VERIFY_FAILED hatası | Zinciri tam yükle |
| Alan adı uyumsuzluğu | “Domain eşleşmiyor” hatası | CN/SAN değerlerini düzelt |
| Revocation kontrolünü atlamak | İptal edilmiş sertifikalar geçerli görünür | OCSP stapling etkinleştir |
❓ Sıkça Sorulan Sorular (SSS)
1. SSL doğrulaması neden önemlidir?
Kullanıcının doğru sunucuya bağlandığını kanıtlar, MITM saldırılarını önler.
2. SSL doğrulama ve şifreleme farkı nedir?
Doğrulama kimliği, şifreleme gizliliği sağlar. Biri olmadan güven tamamlanmaz.
3. SSL: CERTIFICATE_VERIFY_FAILED hatası neden olur?
Sertifika süresi dolmuş, zincir eksik veya alan adı yanlış olabilir.
4. curl veya Python’da doğrulamayı kapatmak güvenli mi?
Hayır. Güvenliği tamamen ortadan kaldırır. Bunun yerine hatayı düzelt.
5. En iyi test araçları hangileridir?
openssl, curl -v, SSL Labs, DigiCert Checker.
##🏁 Sonuç SSL/TLS doğrulaması yalnızca veriyi şifrelemez, aynı zamanda güven sağlar. Sunucunuzun sertifikalarını doğru yapılandırmak, hem kullanıcı güvenliği hem SEO sıralaması açısından önemlidir.
🌩️ Rabisu Bulut üzerinde SSL doğrulamasını kolayca yapılandırabilir, sertifikalarınızı otomatik yenileyebilirsiniz.