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:
- Ş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.
- 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.
- 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.)
}