Přejít k navigační liště

Zdroják » Různé » Vypněte TLS 1.0 a 1.1 už dnes

Vypněte TLS 1.0 a 1.1 už dnes

Články Různé

Společnosti Microsoft, Google, Apple i Mozilla shodně oznámily, že z jejich webových prohlížečů Internet Explorer, Edge, Chrome, Safari a Firefox počátkem roku 2020 odstraní protokoly TLS 1.0 a TLS 1.1. Návštěvníci vašeho webu už je pravděpodobně stejně nepoužívají a tak je můžete na serveru vypnout už dnes. Pojďme si to pomocí „Handshake Simulation“ v SSL Labs Server Testu ověřit.

Nálepky:

Text vyšel původně na webu autora.

Protokol TLS (Transport Layer Security) je základem HTTPS a jeho první verze vyšla v roce 1999. Byl to nástupce protokolu SSL 3.0 z roku 1996, ten už prohlížeče nepodporují tři roky a váš server by taky dávno neměl. Platební brány a weby pracující s platebními kartami nesmí TLS1.0 používat od letošního léta.

Zahoďte TLS 1.0 a 1.1

Verze TLS 1.1 vyšla o pár let později, v roce 2006, ale podobně jako TLS 1.0 používá překonané algoritmy MD5 a SHA-1. TLS verze 1.0 ani 1.1 prohlížeče běžně už nepoužívají:

  • Google tvrdí, že s těmito protokoly je v Chrome uskutečněno jen 0,5 % HTTPS spojení
  • V Edge je to prý 0,72 %
  • V Safari údajně 0,36 %
  • Firefox uskuteční 1,11 % všech HTTPS spojení pomocí TLS 1.0 a 0,09 % pomocí TLS 1.1

Pokud server tyto protokoly stále podporuje, tak hrozí, že útočník donutí prohlížeč použít je namísto bezpečného TLS 1.2 nebo TLS 1.3. Bylo by tedy vhodné je na serveru zakázat, ale předtím je dobré si zjistit, jaké prohlížeče tyto protokoly vyžadují. Už jich moc není, v seznamu nenajdete ani jeden moderní browser.

Handshake simulation

Prohlížeče, které se po vypnutí TLS 1.0 a 1.1 na váš server nepřipojí, můžete zjistit třeba otestováním vlastního webu pomocí nástroje SSL Labs Server Test. Do políčka Hostname zadejte vaší doménu, stiskněte Submit a chvíli počkejte na dokončení testu.

Známka A+ v SSL Labs Server Testu

Můj web dostal v hodnocení známku A+, nejlepší možnou, jak překvapivé

Test vyzkouší nastavení HTTPS na vašem webu, ten by měl ideálně získat známku A nebo A+, kterou ale aktuálně dostanete i když máte staré TLS povolené. Na hodnocení má vliv několik nastavení, které jsem se pokusil krátce vysvětlit ve své přednášce o SSL Labs. Ale tenhle článek není o známkách, níže se budu věnovat převážně jen protokolům TLS.

Ve výsledcích pod informacemi o certifikátech začíná sekce Configuration. V ní uvidíte, které protokoly server podporuje a v části Handshake Simulation jsou uvedeny testované prohlížeče, protokoly a šifry, které ke spojení používají.

Handshake Simulation ve výsledcích SSL Labs Server Testu

Část výsledků simulace prohlížečů pro náhodný web

„Handshake“ je počáteční část HTTPS spojení, během které se prohlížeč a server domluví na tom, jaké protokoly, šifry a šifrovací klíče budou používat. SSL Labs zkouší simulovat cca 50 různých prohlížečů a výsledky této domluvy pak zobrazí v přehledné tabulce.

Řádek po řádku

Pojďme si rozebrat třeba hned ten první řádek, do detailů kryptografie ale zacházet nebudeme, nebojte:

Android 2.3.7 No SNI² RSA 2048 (SHA1) TLS 1.0 TLS_RSA_WITH_AES_128_CBC_SHA No FS

Android 2.3.7
Simulovaný prohlížeč (obecně HTTPS klient) a verze
No SNI2
Poznámka, která v tomto případě říká, že Android 2.3.7 nepodporuje SNI (Server Name Indication), což je technologie dovolující na jedné IP adrese provozovat více webů na HTTPS, každý s vlastním certifikátem (ta „2“ v „SNI2“ je jen odkaz na poznámku pod čarou) – ve finále to znamená, že pokud chcete podporovat i takto staré Androidy, tak pro váš web musíte mít vyhrazenou IP adresu
RSA 2048 (SHA1)
RSA znamená spoustu věcí, v tomto případě ale označuje typ certifikátu a soukromého klíče, 2048 pak velikost toho klíče a SHA1 algoritmus použitý pro podpis certifikátu, který by se již běžně používat neměl
TLS 1.0
Použitý šifrovací protokol ve verzi, které se zrovna náhodou chceme zbavit
TLS_RSA_WITH_AES_128_CBC_SHA
Použitá šifra, přesněji „cipher suite“, která určuje, jak proběhne výměna klíčů a jaký šifrovací algoritmus se použije
No FS
„FS“ znamená Forward Secrecy a test nám zde naznačuje, že „cipher suite“ se tímto označením nemůže pyšnit a že pokud by mizera získal soukromý klíč ze serveru, tak by mohl rozšifrovat již proběhlou zaznamenanou komunikaci i tu, která teprve proběhne

A teď ten poslední řádek z předchozího obrázku:

Android 7.0 EC 256 (SHA256) TLS 1.2 > h2 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 ECDH x25519 FS

Android 7.0
O dost novější verze, že
EC 256 (SHA256)
Byl použit certifikát i soukromý klíč využívající Elliptic-curve cryptographyEC klíče i certifikáty jsou o dost menší (klíč má „jen“ 256 bitů) a zpracovávají se rychleji, podpora je také výborná (já na svém webu používám už jenom EC certifikáty); SHA256 je pak označení pro podpisový algoritmus z rodiny hashovacích funkcí SHA-2, která by se pro certifikáty měla používat
TLS 1.2 > h2
Spojení proběhlo pomocí TLS 1.2, „> h2“ naznačuje, že bylo využito protokolu HTTP/2
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
Použitá šifra, resp. „cipher suite“
ECDH x25519
Upřesnění výměny klíčů v dané „cipher suite“, který proběhla pomocí algoritmu Elliptic-curve Diffie–Hellman s eliptickou křivkou označovanou jako X25519
FS
„Cipher suite“ podporuje Forward Secrecy, takže mizera, který se dostane k soukromému klíči ze serveru nedokáže minulou ani budoucí komunikace dešifrovat

Pohledem na všechny řádky zjistíte, který prohlížeč by použil TLS 1.0 nebo 1.1. Pokud takové prohlížeče již nechcete nebo nemusíte podporovat, tak tyto zastaralé protokoly v konfiguraci vašeho serveru vypněte. Nedávno to udělal např. i Slevomat, viz výsledky testu. A když to mohl vypnout Slevomat, tedy komerční web pro velmi širokou veřejnost, tak vy můžete nejspíš také. Správce serveru by to měl zvládnout, v Apache k tomu slouží direktiva SSLProtocol, v nginx ssl_protocols.

Nepodporované prohlížeče

Na konci sekce Handshake Simulation najdete pod hlavičkou Not simulated clients (Protocol mismatch) prohlížeče, které se v defaultním nastavení chtěly připojit již nepodporovaným protokolem. Pro můj web ta podstatná část vypadá takto, přičemž na obrázku chybí ještě stará Java, knihovna OpenSSL z dob, kdy se po Zemi ještě proháněli dinosauři a Safari verze 5 a 6 na OS X:

Not simulated clients (Protocol mismatch)

Na můj web se nepřipojí ani Chrome 49 na Windows XP, protože ten by potřeboval RSA certifikát, který jsem přestal používat. Pokud browser zvládne TLS 1.2, tak zvládne i EC certifikát, s touhle jedinou výjimkou, takže je můžete v klidu používat. Pokud byste stále potřebovali podporovat i Chrome na Windows XP, tak můžete použít oba typy certifikátů zároveň, pokud to váš server umí a Apache i nginx to umí.

Vypněte nepoužívané věci

Když už budete v tom vypínání starých TLS, tak stejně můžete postupovat u „cipher suites“. SSL Labs Server Test některé „cipher suites“ označí jako slabé („weak“), některé dokonce jako „insecure“, ale pokud je žádný vámi podporovaný prohlížeč nepoužívá, tak je z konfigurace serveru můžete také odstranit. Můj server nabízí jen 5 „cipher suites“, konfiguraci jsem převzal z generátoru od Mozilly, přičemž jsem použil profil „Modern“.

Pokud se o HTTPS zajímáte ještě víc, tak vás rád přivítám na dalším termínu mého školení HTTPS (13. prosince 2018 Praha).

Komentáře

Subscribe
Upozornit na
guest
0 Komentářů
Inline Feedbacks
View all comments

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.