Sobes.tech
Junior

HTTPS protokolü ile verilerinizi nasıl koruyabilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

HTTPS, istemci ile sunucu arasında güvenli bir bağlantı sağlamak için SSL/TLS protokolünü kullanır. Bu, üç temel mekanizma ile başarılır:

  1. Şifreleme: Tüm iletilen veriler şifrelenir, bu da onları trafik yakalayan kötü niyetli kişiler için okunamaz hale getirir. Simetrik ve asimetrik şifreleme algoritmaları kullanılır.
  2. Veri bütünlüğü: HTTPS, verilerin iletim sırasında değiştirilmediğini garanti eder. Bunun için hash fonksiyonları kullanılır. Veriler değiştirilmişse, alındığında hash toplamı gönderenle uyuşmaz.
  3. Kimlik doğrulama: İstemci, güvenilir bir sertifika otoritesi (CA) tarafından verilen dijital sertifika ile sunucunun gerçekliğini doğrular. Bu, Man-in-the-Middle saldırılarını önler.

HTTPS bağlantısı kurulduğunda, bir el sıkışma (handshake) gerçekleşir:

  • İstemci ve sunucu SSL/TLS sürümünü ve şifreleme setlerini kararlaştırır.
  • Sunucu, dijital sertifikasını istemciye gönderir.
  • İstemci, sertifikayı doğrular (CA'nın otantikliğini, geçerlilik süresini, alan adıyla uyumluluğu).
  • İstemci, oturum anahtarını oluşturur, bunu sunucunun genel anahtarıyla şifreler (sertifikadan alınır) ve sunucuya gönderir.
  • Sunucu, oturum anahtarını özel anahtarıyla çözer.
  • Bundan sonra, tüm trafik bu oturum anahtarı kullanılarak şifrelenir.

Ruby on Rails'ta HTTPS kullanımı örneği:

Üretim ortamında, Rails, web sunucusu (Nginx, Apache) doğru yapılandırıldığında HTTP isteklerini otomatik olarak HTTPS'ye yönlendirir:

# config/environments/production.rb
# Uygulamaya tüm erişimi SSL üzerinden zorla, Strict-Transport-Security ve güvenli çerezleri kullan.
config.force_ssl = true

Web sunucusu seviyesinde:

# Nginx için örnek
server {
    listen 80;
    server_name myapp.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name myapp.com;

    ssl_certificate /path/to/myapp.com.crt;
    ssl_certificate_key /path/to/myapp.com.key;

    # Diğer SSL/TLS ayarları
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # ... diğer sunucu ayarları (kök, konum vb.)
}