Sobes.tech
Junior

HTTPS protokolu ilə məlumatlarınızı necə qorumaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

HTTPS müştəri və server arasında qorunan əlaqəni təmin etmək üçün SSL/TLS protokolundan istifadə edir. Bu, üç əsas mexanizm vasitəsilə həyata keçirilir:

  1. Şifrləmə: Göndərilən bütün məlumatlar şifrələnir, bu da onları trafikə müdaxilə edən zərərli şəxslər üçün oxunmaz edir. Simmetrik və asimmetrik şifrləmə alqoritmləri istifadə olunur.
  2. Məlumatların bütövlüyü: HTTPS məlumatların ötürülmə zamanı dəyişdirilmədiyini təmin edir. Bunun üçün hash funksiyaları istifadə olunur. Əgər məlumatlar dəyişdirilibsə, qəbul zamanı hesablama nəticəsi göndərənlə uyğun gəlməyəcək.
  3. Təsdiqləmə: Müştəri serverin etibarlılığını rəqəmsal sertifikat vasitəsilə yoxlayır, bu sertifikat etibarlı sertifikatlaşdırma mərkəzi (CA) tərəfindən verilir. Bu, Man-in-the-Middle hücumlarını qarşısını alır.

HTTPS əlaqəsi qurularkən, əl sıxma (handshake) baş verir:

  • Müştəri və server SSL/TLS versiyası və şifrələmə dəstlərini razılaşdırır.
  • Server öz rəqəmsal sertifikatını müştəriyə göndərir.
  • Müştəri sertifikatı yoxlayır (CA-nın etibarlılığı, müddət, domen adı ilə uyğunluq).
  • Müştəri sessiya açarını yaradır, onu serverin ictimai açısı ilə şifrələyir (sertifikatdan alınır) və serverə göndərir.
  • Server sessiya açarını öz şəxsi açısı ilə deşifrə edir.
  • Daha sonra, bütün trafik bu sessiya açarı ilə şifrələnir.

Ruby on Rails-də HTTPS istifadəsi nümunəsi:

İstehsal mühitində, Rails, veb server düzgün konfiqurasiya olunubsa, HTTP sorğularını avtomatik olaraq HTTPS-ə yönəldir:

# config/environments/production.rb
# Bütün girişləri SSL vasitəsilə məcburi edir, Strict-Transport-Security və təhlükəsiz kukilərdən istifadə edir.
config.force_ssl = true

Veb server səviyyəsində:

# Nginx üçün nümunə
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;

    # Digər SSL/TLS parametrləri
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # ... digər server parametrləri (kök, yer və s.)
}