Společnosti Microsoft, Google, Apple i Mozilla včera shodně oznámily, že z jejich webových prohlížečů Internet Explorer, Edge, Chrome, Safari a Firefox počátkem v polovině 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.
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í TLS 1.0 používat od léta 2018.
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í:
chrome://flags/#show-legacy-tls-warnings
) a finálně přestanou být podporovány v Chrome 83, který by měl vyjít v půlce května 2020 (prohlížeč zobrazí celostránkovou chybu – nazývanou „interstitial“ – s kódem NET::ERR_SSL_OBSOLETE_VERSION
, která zatím půjde „prokliknout“) Varování v Chrome 72, vyzkoušejte si ho na odkazech z badssl.com
SSL_ERROR_UNSUPPORTED_VERSION
a tlačítkem pro povolení těchto zastaralých protokolů – pro opětovné zakázání musíte v about:config
nastavit security.tls.version.enable-deprecated
na false
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, ačkoliv moderní browsery takový „fallback“ odstranily již před několika lety (v Chrome 50, Firefox 37). Bylo by tedy vhodné je na serveru zakázat, od března 2021 to dokonce „nařizuje“ RFC 8996, 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.
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.
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 od ledna 2020 dostanete pouze pokud máte staré TLS zakázané. 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í.
Čá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.
Pojďme si rozebrat třeba hned ten první řádek, do detailů kryptografie ale zacházet nebudeme, nebojte:
A teď ten poslední řádek z předchozího obrázku:
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
.
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:
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í.
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 (nejbližší termín: termín zatím nevypsán).