TLSv1.3 - improved handshake

TLS 1.0 znika, pora na… TLS 1.3

Ostatnie lata „https” to TLS w wersji 1.2. Niestety nie jest on za szybki, a co gorsza okazało się, że nie spełnia swojej pierwotnej funkcji – bezpieczeństwa. I tak przez 10 lat istnienia TLSv1.2 mogliśmy słyszeć o takich podatnościach jak FREAK, Heartbleed, Poodle, ROBOT czy SLOTH.
Mimo wszystko sporo firm dopiero w 2018 roku przesiadło się na TLS w wersji 1.2 (GitLab, ZendDesk, Office365).
Ale nie o tym dzisiaj. W połowie 2018 roku został sprecyzowany jego następca – TLSv1.3 (chociaż powinien nazywać sie TLSv2.0). TLS 1.3 jest o wiele bezpieczniejszy od poprzednika, a do tego szybszy. Usunięto bardzo wiele przestarzałych lub po prostu potencjalnie niebezpiecznych mechanizmów (np. md5, sha-1, des/3des, aes-cbc), a dodano wiele kombinacji opartych o sha256/aes128 oraz skrócono proces „uścisku dłoni”.

nginx i TLS 1.3

Aby zacząć „przygodę” z TLS 1.3 na serwerze musimy posiadać OpenSSL 1.1.1 (np. Debian 10, Ubuntu 18.10, FreeBSD 12.0 lub ze źródeł), od strony Klienta obsługę taką dostarcza obecnie Chrome 70, Opera 57 i Firefox 63 (niestety Safari nie obsługuje – aktualny status wdrożeń).
Jako miłośnik kompilacji przedstawię szybki sposób od strony serwera (przedstawione wersje poniżej są najświeższe, jeśli to możliwe powinniśmy sprawdzić sumy kontrolne paczek po pobraniu):

Gdy mamy obsługę TLS 1.3 na serwerze pozostaje tylko odpowiednio zmienić konfigurację samego serwera WWW (nginx). Ze względu, że nie wszystkie przeglądarki wspierają TLSv1.3 powinniśmy pozostawić nadal obsługę TLSv1.2. Natomiast włącznie 0-RTT (Zero Round Trip Time Resumption) powoduje spory wzrost wydajności i szybkości połaczenia (więcej informacji w CloudFare) w przypadku TLSv1.3:

Jak widziecie wystarczy dodać TLSv1.3 na liście obsługiwanych protokołów, oraz dodatkowo można włączyć obsługę 0-RTT. Reszta tak naprawdę zależy od Waszego szczególnego przypadku (np. proxy_pass).

DNS CAA

SSL Labs - matipl.pl result
Gdybyście sprawdzali po tych zmianach poprawność działania nowych ustawień przez SSL Labs, zauważycie, że pojawiła się tam nowa pozycja DNS CAA, jest to opcja która chroni przed niepowołanym wystawieniem certyfikatu dla domeny. Dlaczego? Nie wiem czy wiecie, ale certyfikat dla Twojej domeny może wysyawić dowolny ośrodek CA, tak naprawdę bez pytania Ciebie o zdanie. Mechanizm DNS CAA wprowadza dodatkową weryfikację przez przeglądarki czy certyfikat, którym posługuje się strona jest faktycznie na białej liście przypisanym do domeny na poziomie jej strefy DNS.
Jeśli korzystacie z certyfikatów Let’s Encrypt wystarczy dodać poniżą linijkę w strefie swojej domeny:

I to wszystko. Miłych testów.