Ana içeriğe geç

🔐 SSL Doğrulama Etkinleştirme Rehberi

Bu rehberde SSL doğrulamanın nasıl çalıştığını, neden kritik olduğunu ve hem sunucularda hem uygulama kodlarında nasıl etkinleştirileceğini öğreneceksiniz. Ayrıca zincir doğrulaması, CA güveni, tarayıcıların kontrol süreci, CLI araçları ve yaygın hataların çözüm yollarını da göreceksiniz.


📌 Bu Rehberde Ne Öğreneceksiniz?

  • SSL doğrulamanın temel mantığı
  • Sertifika zincirinin neden önemli olduğu
  • Tarayıcıların doğrulamayı nasıl yaptığı
  • OpenSSL ve curl ile manuel test
  • Python ve Node.js’te doğrulama
  • Self-signed sertifika güvenliği
  • En iyi SSL güvenlik uygulamaları
  • Yaygın hatalar ve çözümleri

1. 🧠 SSL Doğrulaması Nedir?

SSL doğrulama, istemcinin bağlandığı sunucunun gerçekten doğru sunucu olduğunu kanıtlayan güvenlik sürecidir. Bu süreçte istemci sertifikanın:

  • Geçerli
  • Güvenilir bir CA tarafından imzalanmış
  • Doğru alan adını içeren
  • Tam zincire sahip
  • Süresi geçmemiş
  • İptal edilmemiş

olduğunu kontrol eder.

Başarısız olursa bağlantı kesilir ve hata oluşur:
SSL: CERTIFICATE_VERIFY_FAILED


2. ⚠️ SSL Doğrulaması Neden Kritik?

  • Kimlik Doğrulama: Sunucu sahte değil.
  • MITM Koruması: Araya giren saldırgan engellenir.
  • Güven Zinciri: Sertifika güvenilir bir CA’dan gelir.
  • Veri Bütünlüğü: Veri değiştirilmeden iletilir.

Şifreleme (encryption) veriyi korur, doğrulama ise kime gönderdiğini doğrular.
İkisi birlikte tam güvenlik sağlar.


🔍 SSL Doğrulama Adımları

1. CA (Sertifika Otoritesi) Doğrulaması

Tarayıcı, sertifikayı imzalayan CA’nın güvenilir olup olmadığını kontrol eder.
Örnek güvenilir CA’lar:

  • Let’s Encrypt
  • DigiCert
  • GlobalSign

2. Alan Adı (Domain) Eşleşmesi

Sertifikadaki CN veya SAN alanlarının siteyle uyumlu olması gerekir.
api.rabisu.cloud için sertifika api.rabisu.cloud içermelidir.


3. Sertifika Zinciri Doğrulaması

Doğrulama şu sırayı izler:

Leaf Certificate → Intermediate CA → Root CA

Eğer ara CA eksikse istemci zinciri tamamlayamaz.

Örnek zincir tablosu:

KatmanAmaçÖrnek
Root CAGüvenin temeliDigiCert Root
Intermediate CALeaf sertifikaları imzalarLet’s Encrypt R3
Leaf (Sunucu)Sunucuya kurulan sertifikarabisu.cloud

4. Süre ve İptal Kontrolü

Sertifika geçerli tarihlerde olmalı.
OCSP ve CRL ile iptal durumu kontrol edilebilir.


🧬 Sertifika Zinciri Nasıl Çalışır?

Zincir, tam gönderilmezse birçok cihaz sertifikayı geçersiz olarak yorumlar.
Bu nedenle Nginx/Apache yapılandırmasında fullchain.pem kullanılır.

İstemci zinciri şu şekilde doğrular:

  1. Leaf sertifikayı alır
  2. Ara CA sertifikasını görür
  3. Root CA’ya uzanan güvenli zincir oluşturur
  4. Zincir tamamsa doğrulama başarılı olur

2. 🌐 Tarayıcılar SSL Doğrulamasını Nasıl Yapar?

Tarayıcının HTTPS akışı:

  1. DNS çözümü yapar.
  2. Sunucuya TCP bağlantısı kurar.
  3. TLS handshake başlar.
  4. Sertifika zinciri alınır.
  5. CA imzası kontrol edilir.
  6. Alan adı eşleşmesi yapılır.
  7. OCSP/CRL ile iptal kontrolü yapılabilir.
  8. Tüm adımlar geçerse sayfa yüklenir.

Hata durumunda:

  • Chrome: ERR_CERT_COMMON_NAME_INVALID
  • Firefox: SEC_ERROR_UNKNOWN_ISSUER

🛠️ CLI ile SSL Doğrulama

1. OpenSSL ile Zincir Kontrolü

openssl s_client -connect rabisu.cloud:443 -servername rabisu.cloud -showcerts

➡️ Bu komut sunucudan gelen sertifika zincirini gösterir.

1.2 curl ile HTTPS Doğrulama


curl -v https://rabisu.cloud

➡️ Bu komut TLS el sıkışmasını detaylı gösterir.

1.3 Yerel Sertifika Doğrulama


openssl verify -CAfile zincir.pem sunucu.pem

➡️ Bu komut sertifikayı zincir dosyasına göre doğrular.


2.🧩 SSL Doğrulama vs SSL Şifreleme

ÖzellikDoğrulamaŞifreleme
AmaçSunucuyu doğrularVeriyi gizler
AşamaHandshake sırasındaBağlantı kurulduktan sonra
KorumaMITM saldırılarıVeri dinleme
GereksinimCA zinciriGüçlü TLS protokolü

2.1 🔌 Kodlarda SSL Doğrulaması

2.1.1 Python – Requests


import requests

resp = requests.get("https://api.rabisu.cloud", timeout=10)
print(resp.status_code)

➡️ Requests kütüphanesi SSL doğrulamayı varsayılan olarak yapar.

javascript

const axios = require('axios');
const agent = new (require('https').Agent)({ rejectUnauthorized: true });

function makeSecureRequest() {
axios.get('https://api.rabisu.cloud', { httpsAgent: agent })
.then(res => console.log("Başarılı:", res.status))
.catch(err => console.error("Hata:", err.message));
}

makeSecureRequest();

➡️ rejectUnauthorized:true sertifika doğrulamasını zorunlu kılar.

2. 🧱 Kendi İmzalı (Self-Signed) Sertifikalar

  1. Sadece iç ağlarda kullanılmalıdır.

  2. Üretim için CA sertifikası şarttır.

  3. İstemcilere manuel olarak güvenilir CA olarak eklenmelidir.


2.2 🧯 Yaygın SSL Doğrulama Hataları ve Çözümü

HataSebepÇözüm
CERTIFICATE_VERIFY_FAILEDEksik ara CAfullchain kullan
curl (60)Süresi dolmuş sertifikaYenile
Hostname mismatchCN/SAN hatalıYeni sertifika
Unknown issuerGüvenilir olmayan CACA değiştir
OCSP errorİptal sunucusu kapalıOCSP stapling

2.3 📚 En İyi SSL Güvenlik Pratikleri

  1. Güvenilir CA kullanın

  2. Otomatik yenileme yapın

  3. TLS 1.2+ zorunlu kılın

  4. Fullchain.pem yükleyin

  5. HSTS başlığını etkinleştirin

  6. Düzenli SSL testleri yapın

  7. Sunucuyu güncel tutun

2.4 🔧 SSL: CERTIFICATE_VERIFY_FAILED Hatası Nasıl Düzeltilir?

Bu hata, istemcinin sunucunun SSL sertifikasını doğrulayamaması sonucu oluşur.
Nedenleri ve çözüm yolları aşağıdadır.


✅ 3. Sertifika Süresi Kontrolü

openssl x509 -in sunucu.crt -noout -dates

➡️ Sertifika tarih dışıysa yenileme yapılmalıdır.

✅ 2. Sertifika Güvenilir Değil


openssl x509 -in sunucu.crt -noout -issuer

➡️ CA güvenilir değilse Let’s Encrypt veya ticari bir CA’dan yeni sertifika alın.

✅ 3. Alan Adı Doğru Değil


openssl x509 -in sunucu.crt -noout -subject

➡️ CN veya SAN alanları domain ile eşleşmelidir.

✅ 4. Ara CA Eksikliği


openssl s_client -connect site.com:443 -servername site.com

➡️ Çıktıda ara CA yoksa, fullchain.pem yükleyin.

✅ 5. Sertifika İptal Edilmiş


openssl ocsp -issuer ca.crt -cert sunucu.crt -url http://ocsp.ornek.com

➡️ İptal edilmişse yeni sertifika alınmalıdır.

BaşlıkDoğrulamaŞifreleme
AmaçKimlik doğrulamaVeri gizleme
KorumaMITM saldırılarıVeri hırsızlığı
GereklilikCA zinciriGüçlü şifreleme
ZamanlamaHandshake sırasındaBağlantı kurulduktan sonra

Bu iki teknoloji birlikte çalışarak tam güvenlik sağlar.

3.2🌍 Online SSL Test Araçları

✔ SSL Labs Tam kapsamlı SSL testi sağlar: https://www.ssllabs.com/ssltest/

✔ DigiCert SSL Checker Kurulum hatalarını tespit eder: https://www.digicert.com/help/

Bu araçlar:

Zincir hataları

Zayıf şifre takımları

Protokol uyumsuzlukları

HSTS eksikleri gibi birçok sorunu gösterir.


3.1 ⚡ Uygulama Kodlarında SSL Doğrulamasını Zorunlu Kılma

Python — doğrulama açık (varsayılan)


import requests

resp = requests.get("https://api.rabisu.cloud", timeout=10)
print(resp.status_code)

➡️ verify=True otomatik aktiftir. Sertifika hatalıysa istek başarısız olur.

3.1.1 Node.js — SSL doğrulaması zorunlu


const axios = require('axios');
const https = require('https');

const agent = new https.Agent({ rejectUnauthorized: true });

axios.get("https://api.rabisu.cloud", { httpsAgent: agent })
.then(res => console.log("Başarılı:", res.status))
.catch(err => console.error("Hata:", err.message));

➡️ rejectUnauthorized sertifika doğrulaması yapılmasını garanti eder.


3.1.2 🔒 Self-Signed Sertifikaları Güvenli Kullanma

Self-signed sertifikalar yalnızca:

Test ortamlarında

İç ağlarda

Geliştirme makinelerinde

kullanılmalıdır.

Güvenli kullanım için:

Sertifikayı istemcilerin CA deposuna ekleyin.

TLS 1.2+ kullanın.

Sertifikayı düzenli yenileyin.

Kullanıcıları bilgilendirin.

Üretim ortamında mutlaka CA imzalı sertifika kullanılmalıdır.


4. 🧱 En İyi SSL Güvenlik Pratikleri

1. CA’den alınmış sertifika kullanın Let’s Encrypt veya ticari CA seçin.

2. Sertifikaları otomatik yenileyin Certbot renew gibi mekanizmalar kullanın.

3. TLS 1.2 veya 1.3 aktif edin Eski versiyonları kapatın: TLS 1.0, 1.1, SSLv3.

4. Fullchain.pem yükleyin Ara CA eksikliği en yaygın hatadır.

5. HSTS kullanın Sunucuyu hep HTTPS kullanmaya zorlar.

6. OCSP Stapling etkinleştirin Performans ve güvenilirlik artar.

7. Düzenli SSL testleri yapın SSL Labs, DigiCert araçlarını kullanın.

Hata KoduSebepÇözüm
CERTIFICATE_VERIFY_FAILEDZincir eksikfullchain yükle
curl: (60)Self-signed / süresi dolmuşYeni sertifika
SSLHandshakeExceptionAlan adı hatalıCN/SAN düzelt
Unknown issuerCA güvenilmezGüvenilir CA al
Peer verification failedTrust store eskiOS güncellemesi
Mixed contentHTTP kaynaklarHTTPS’le değiştir

❓ Gelişmiş SSS

1. SSL doğrulaması neden başarısız olur?

En sık sebep: eksik ara CA zinciri.

2. curl -k veya verify=False kullanmak güvenli midir?

Hayır. MITM saldırılarına kapı açar.

3. Self-signed sertifika dış dünyada kullanılabilir mi?

Hayır. Sadece test ve iç sistemlerde.

4. Zincir eksikse ne olur?

Tarayıcı kök CA’ya ulaşamaz ve hata verir.

5. Sertifika yenilerken hizmet kesilir mi?

Doğru yapılandırmada kesinti olmaz.

6. SSL doğrulama devre dışı bırakılabilir mi? Evet, ama çok tehlikelidir. MITM saldırıları için kapı aralar.

7. Sertifika zincirini nasıl görebilirim?


openssl s_client -connect site.com:443 -showcerts

8. Doğrulama neden bazı cihazlarda çalışıp bazılarında çalışmıyor? Eski cihazlarda CA deposu güncel değildir.

9. HSTS nedir? Tarayıcıyı HTTP yerine zorunlu HTTPS kullanmaya zorlar.

10. Let’s Encrypt güvenli midir? Evet. Dünyada en çok kullanılan CA’dır.


🏁 Sonuç

SSL doğrulama, güvenli iletişimin temel yapı taşıdır. Bu rehberde CA kontrolünden zincir doğrulamasına, uygulama kodlarından CLI komutlarına kadar tüm süreci öğrendiniz. Güvenli bağlantı → Güçlü kullanıcı deneyimi. İyi yapılandırılmış SSL her projenin temelidir.

Sertifika zincirinizi doğru oluşturun, doğrulamanızı aktif tutun ve TLS yapılandırmanızı modern protokollerle güçlendirin. Güvenli bir altyapı için Rabisu Bulut sunucularında bu yapılandırmaları hızla uygulayabilirsiniz.