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