Zastanawiasz się jak zwiększyć prędkość wczytywania się stron https ?

Zastanawiasz się jak zwiększyć prędkość wczytywania się stron https ? Czy wiesz, że jeżeli przeglądarka wykonuje połączenia bez SSL, nawiązuje je ….. szybciej ? Co zrobić aby przyspieszyć szyfrowaną komunikację pomiędzy serwerem a przeglądarką ( https) ?

https, TLS, 0-RTT, nowe technologie, optymalizacja, apache

Zastanawiasz się jak zwiększyć prędkość wczytywania się stron https ?
zmniejsz czas wczytywania się stron https

Do czego służy SSL - Secure Socket Layer?
SSL ma za zadanie wytworzenie przez serwer możliwości wysłania i odebrania zakodowanej transmisji pakietów.    

Jeżeli SSL służy do zabezpieczenia połączenia czym jest TLS - Transport Layer Security?
Jest to kontynuacja próby zabezpieczenia połączenia poprzez utworzenie specjalnej powłoki przy połączeniu z serwerem, mającej za zadanie ochronę tego połączenia, TLS jest kontynuacją SSL, ale o tym nieco dalej:
Jeżeli SSL, służy do tego samego co TLS, dlaczego zostało wprowadzone ? 
Sposób kodowania połączenia, przy pomocy SSL sprawdzał się, aż do momentu wykrycia możliwości użycia ataku Man in the middle, w procesie renegocjacji sesji. Protokół TLS1.0 został wprowadzony jako następca protokołu SSL 3.0 w 1999 r, aby rozwiązać  problemy z zabezpieczeniem protokołu SSL. Czasami TLS, są nazywane kolejnymi wersjami SSL, nie jest to nie prawda, ponieważ każda poprzednia wersja SSL wnosiła nowe usprawnienia, oraz deprecjonowała niektóre funkcje poprzednich wersji, kierując się tą logiką faktycznie SSL mogła by mieć kolejne wersje np. SSL 4.0 itd. Warto tutaj zauważyć, że TLS lub jak ktoś woli SSL odnoszą się obecnie do uzgadniania, które odbywa się między klientem a serwerem. (Hand Shake) Uścisk dłoni nie wykonuje żadnego szyfrowania, tylko zgadza się na wspólny sekret i typ szyfrowania, który ma zostać użyty do połączenia.


Jakie zabezpieczenie przesyłu danych  do przeglądarki jest obecnie zalecane ?
Połączenia z wykorzystaniem SSL, obecnie nie gwarantują bezpieczeństwa połączenia i należałoby rozważyć aktualizację protokołu zabezpieczeń do min TLS 1.2

Protokół TLS 1.1 został opublikowany w 2006 roku i certyfikaty bazujące na tym protokole mają maksymalną ważność do 2020 roku. TLS 1.2 został opublikowany w 2008 roku i prawdopodobnie jest on najrozsądniejszy do wdrożenia, TLS 1.3 jest najnowszą i najszybszą wersją tego protokołu, opublikowaną w 2018 roku.

Jak mogę sprawdzić jakie wersje szyfrowania mam włączone  na swoim serwerze?  
Ponieważ nie zaleca się już udostępniania połączeń poniżej TLS 1.2 koniecznie sprawdź które połączenia masz włączone.
Aby to sprawdzić skorzystaj z bezpłatnej usługi online która przeprowadzi analizę konfiguracji twojego serwera WWW dla połączenia SSL z Internetem -  Globalsign ssllabs, link podam na dole strony.

 
Jak zmienić rodzaj ustawienie protokołu SSL w APACHE ? 
Dla konfiguracji APACHE, zmień „ ssl.conf”  w ścieżce etc/apache2/mods-enabled 
Wartość SSLProtocol określa protokół który ma zostać wykorzystany do połączeń (Pamiętaj o zrobienie kopii pliku, przed modyfikacją) .
                #   The protocols to enable.
   #   Available values: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2
                #   SSL v2  is no longer supported
                SSLProtocol TLSv1.2

Dlaczego moje połączenie może być wolniejsze niż w przypadku braku SSL/ TLS ?
Jeżeli korzystasz z protokołu TLS 1.2 czas połączenia powinien być nieznacznie większy od połączenia http, różnica w czasie połączenia bierze się stąd, że serwer przed połączeniem z przeglądarką negocjuje (Hand Shake)  użycie protokołu, lub/ oraz ważność certyfikatów uwierzytelniających połączenie.  Jeżeli jednak masz ustawione ALL w SSLProtocol czas negocjacji może się wydłużyć i spowodowane jest to tylko niewłaściwą konfiguracją twojego serwera.

Czy protokół  TLS 1.3 wpływa pozytywnie na ograniczenie czasu potrzebnego na (Hand Shake)  ? 
TLS 1.2, podobnie zresztą jak i niższe jego wersje, do nawiązania bezpiecznego połączenia potrzebują serii zapytań i odpowiedzi, pomiędzy przeglądarką a serwerem, wydłuża to znacznie czas ich negocjacji.
Protokół TLS 1.3 został zoptymalizowany i już w pierwszym zapytaniu do przeglądarki wysyła istotne dane, identyfikując się, oraz oznajmia informacje o kluczu współdzielonym. Reszta negocjacji przebiega również w znacznym stopniu w sposób  skrócony, eliminując potrzebę stosowania dodatkowych zapytań do  przeglądarki.

Ciekawą funkcją TLS 1.3 jest możliwość wznowienia połączenia 0-RTT (Zero Round Trip Time Resumption) , dzięki czemu raz autoryzowana przeglądarka nie musi ponawiać procesu negocjacji warunków połączenia szyfrowanego dla tego samego,  ustanowionego już certyfikatu od wcześniejszego połączenie (kolejne połączenie bez uścisku dłoni).  W przypadku bardzo wrażliwych danych protokół TLS 1.3 może pracować z wyłączeniem możliwości 0-RTT.

Brak każdorazowej autoryzacji, budzi pewne obawy odnośnie możliwości nadużyć poprzez przechwycenie „przytrzymanych”  danych 0-RTT i wykorzystanie ich do nawiązania nieautoryzowanego połączenia z serwerem.  Prawdopodobnie mogą wynikać realne zagrożenia z zastosowania tej technologii, dlatego dobrze byłoby wziąć pod uwagę wrażliwość danych na serwerze i skutki dostępu do nich, oraz nakłady czasu i pracy aby przechwycić takie dane.

Niestety nie mam możliwości wypróbowania TLS 1.3 ponieważ obecnie mój serwer nie wspiera tej technologii, niewątpliwie jednak w momencie kiedy ukaże się sposobności wypróbowania tego protokołu, zrobię to.
Linki:
Globalsign ssllabs  https://globalsign.ssllabs.com/