Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

SSL/TLS — bezpečnostní best practices pro 2014

22. 05. 2014 4 min čtení CORE SYSTEMSsecurity

Duben 2014. Heartbleed bug otřásl celým internetem. Dva roky stará zranitelnost v OpenSSL umožňovala číst paměť serverů — včetně privátních klíčů a session tokenů. Pokud vás tohle neprobudilo k revizi SSL/TLS konfigurace, nic už vás neprobudí.

Stav SSL/TLS v roce 2014

Podívejme se na realitu: většina českých webů stále běží na HTTP. Ti, kteří mají HTTPS, často používají zastaralé protokoly a slabé cipher suites. SSL 3.0 je stále zapnutý. RC4 je „doporučená” alternativa k BEAST útoku. A self-signed certifikáty v interních systémech jsou norma.

Tohle se musí změnit. Heartbleed byl budíček. Ale problém je hlubší — špatná konfigurace TLS je všudypřítomná a většina administrátorů se spokojí s defaultním nastavením, které je často děravé.

Krok 1: Vypněte SSL 3.0 a starší

SSL 2.0 je mrtvý už roky. SSL 3.0 by měl být taky — je zranitelný vůči POODLE útoku (ten přijde v říjnu 2014, ale chytří admini ho vypnou už teď). Minimální protokol by měl být TLS 1.0, ideálně TLS 1.2 pro moderní klienty.

# Nginx — doporučená TLS konfigurace 2014
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:!aNULL:!eNULL:!EXPORT:!RC4:!MD5:!PSK';

# DH parametry — generujte vlastní!
ssl_dhparam /etc/nginx/dhparam.pem;  # openssl dhparam -out dhparam.pem 2048

Krok 2: Cipher suites — pořadí matters

Správné pořadí cipher suites je kritické. Server by měl preferovat:

  • ECDHE cipher suites — poskytují Forward Secrecy (PFS). I když útočník získá privátní klíč, nemůže dešifrovat minulou komunikaci.
  • AES-GCM — authenticated encryption, rychlé na moderním hardware s AES-NI instrukcemi
  • SHA-256+ — SHA-1 je na cestě ven, Chrome ho začne označovat jako nebezpečný

Co zakázat: RC4 (bias útoky), MD5 (kolize), EXPORT ciphers (40-bit, pozůstatek z 90. let), NULL ciphers (žádné šifrování) a DES/3DES (pomalé, slabé).

Krok 3: HSTS — vynuťte HTTPS

HTTP Strict Transport Security říká prohlížeči: „Nikdy se na tento web nepřipojuj přes HTTP.” Jednoduchá hlavička, dramatický dopad na bezpečnost. Eliminuje SSL stripping útoky.

# HSTS hlavička — Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

# Apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Pozor: HSTS je jednosměrka. Jakmile ho zapnete s dlouhým max-age, prohlížeče budou odmítat HTTP po dobu platnosti. Začněte s krátkým max-age (3600) a postupně zvyšujte.

Krok 4: Certifikáty — dělejte to správně

Po Heartbleedu je nutné přegenerovat všechny certifikáty a privátní klíče. Ne jen obnovit — nový klíčový pár. Starý mohl být kompromitován.

  • RSA 2048-bit minimum — 1024-bit je nedostatečné, NIST doporučuje 2048+ od roku 2014
  • SHA-256 podpis — SHA-1 certifikáty budou prohlížeči penalizovány od 2015
  • Celý řetězec — servírujte intermediate certifikáty, ne jen leaf
  • OCSP Stapling — server sám ověřuje platnost certifikátu, rychlejší než CRL
# OCSP Stapling — Nginx
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

Krok 5: Testujte, testujte, testujte

Konfigurace bez testování je zbytečná. Používejte tyto nástroje:

  • SSL Labs Server Test (ssllabs.com) — cílte na rating A+
  • testssl.sh — offline testování z příkazové řádky
  • nmap –script ssl-enum-ciphers — rychlý audit cipher suites
  • openssl s_client — manuální debug TLS handshake

Naše interní pravidlo: žádný server nejde do produkce bez SSL Labs ratingu A. Po Heartbleedu jsme přeauditovali všech 47 produkčních serverů. 31 z nich mělo rating B nebo horší. Za dva týdny byly všechny na A.

Forward Secrecy — proč na tom záleží

Perfect Forward Secrecy (PFS) zajišťuje, že kompromitace privátního klíče nezpřístupní historickou komunikaci. Každá session používá unikátní ephemeral klíč. To je klíčové zejména po Heartbleedu — pokud NSA nebo kdokoliv jiný zachytil šifrovaný provoz a později získal klíč, bez PFS může dešifrovat vše zpětně.

ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) je dnes preferovaný způsob. Je rychlejší než DHE a poskytuje stejnou úroveň bezpečnosti s kratšími klíči. Ujistěte se, že vaše cipher suites začínají ECDHE.

Časté chyby, které vidíme

Při auditech SSL/TLS konfigurace u českých firem narážíme opakovaně na stejné problémy:

  • Defaultní DH parametry (1024-bit) — generujte vlastní 2048-bit
  • Mixed content — HTTPS stránka načítá HTTP zdroje, prohlížeč zobrazí varování
  • Chybějící redirect HTTP → HTTPS — uživatel přistoupí přes HTTP a zůstane tam
  • Wildcard certifikát na veřejně přístupných subdoménách — kompromitace jedné = kompromitace všech
  • Interní systémy bez TLS — „je to přece za firewallem” (není)

SSL/TLS není volitelné

Heartbleed byl varování. POODLE přijde za pár měsíců. A Google právě oznámil, že HTTPS bude ranking signál. Správná TLS konfigurace není luxus — je to základ. Projděte si tento checklist, otestujte své servery a opravte, co je potřeba. Dnes, ne zítra.

ssl/tlsheartbleedsecurityhttpsnginx