czwartek, 30 stycznia 2014

Konfiguracja TLS - ocena SSL Labs

Uzyskanie wysokiej oceny w teście SSL Labs nie jest sztuką dla sztuki.Prawidłowa konfiguracja TLS zwiększa bezpieczeństwo jaki i aspekt wizerunkowy naszej strony.
Niestety uzyskanie poniższej oceny  w chwili  pisania tych słów nie jest praktyczne.

A+ GRADE
https://www.ssllabs.com/ssltest/analyze.html?d=monitor.socha.it
Wersja offline

Ze stroną o tym adresie https://monitor.socha.it aktualnie można połączyć się wyłącznie za pomocą przeglądarek takich jak Chrome, Internet Explorer 11 czy wybranych wersji Safari (zarówno OSX jak i iOS). Nie uda się nam to za pomocą Firefoxa. Jego stabilna wersja o numerze 26 obsługuję tylko połączenia TLS 1.0 lub SSLv3. Wersja Firefox 27 (BETA) posiada już wsparcie dla TLS 1.2. Poważnym problem  może być też  googlebot, który również  nie będzie w stanie nawiązać połączenia. Taka sytuacja może być bardzo niekorzystna dla naszej strony.

Uzyskanie  punktacji na poziomie  100  w każdym z czterech testów może wydawać się  wyzwaniem czysto akademickim. W przypadku mojej strony jest to świadomie podjęta decyzją i zaakceptowanie  konsekwencji wynikających z zmniejszonej niedostępności strony.

Bardziej praktyczna konfiguracja TLS  dostępna jest na stronie https://www.robi-net.it/


https://www.ssllabs.com/ssltest/analyze.html?d=www.robi-net.it
Wersja offline

Konfiguracja dla tej strony pozwala na znacznie szerszy dostęp poprzez większość aktualnych przeglądarek.

Jak uzyskać wysoki wynik, a co za tym idzie bezpieczniejszą konfigurację? Dokładny opis co jest testowane i jak ważone dostępny jest pod adresem https://www.ssllabs.com/projects/rating-guide/index.html. Skrótowo opiszę wymagania dla uzyskania wyniku 100 w każdym z testów.

  • Certificate
    Każdy certyfikat wystawiony przez "zaufane" centrum certyfikacji. Nawet podstawowy certyfikat typu "domain-validated" będzie wystarczający.
  •  Protocol Support
    Ocena zależy od protokołów obsługiwanych przez serwer. Wynik 95 uzyskamy udostępniając TLS 1.0, TLS 1.1 i TLS 1.2. Obecność protokołu SSLv3 obniży wynik. Aby uzyskać wynik 100 musimy oferować wyłącznie TLS 1.2.
  •  Key Exchange
    Aby uzyskać wynik na poziomie 100 nasz klucz prywatny RSA musi mieć długość przynajmniej 4096 bitów.
    Jeśli używamy algorytmów EDH/DHE lub ECDHE wymagane jest użycie wspólnego klucza/parametru DH o długości minimum 4096 bitów. Użycie klucza RSA krótszego niż 2048 bitów obniża ocenę (analogicznie dla DH).
  • Cipher Strenght
    Najwyższy wynik zapewnia użycie algorytmów szyfrujących posiadających długość klucza przynajmniej na poziomie 256 bitów (np. AES 256). 
System ocen wystawianych przez SSL Labs  uległ zmianie parę dni temu. Jest bardziej restrykcyjny przez to dla stron/usług, które nie były na bieżąco z konfiguracją SSL/TLS uzyskanie wyniku na poziomie oceny A może być problematyczne.

Jako ciekawostkę zamieszczam skan strony  Ministerstwa Administracji i Cyfryzacji.
Skan wykonany 2014.01.30
https://www.ssllabs.com/ssltest/analyze.html?d=mac.gov.pl
Wersja offline

Wynik skanu jest dość niepokojący. Protokół TLS 1.2 został zdefiniowany w  sierpniu 2008. Natomiast obsługa TLS 1.2 w popularnej bibliotece openssl jest od marca 2012 (wersja 1.0.1).
Brak obsługi Forward Secrecy można być "ryzykowany" w czasach gdy głowy państw są podsłuchiwane :)

Testy innych stron w domenie gov.pl. Oceny pozostawiam bez komentarza.

Strona logowania do systemu EPUAP

https://www.ssllabs.com/ssltest/analyze.html?d=hetman.epuap.gov.pl
Wersja offline
https://www.ssllabs.com/ssltest/analyze.html?d=epuap.gov.pl
Wersja offline


Strona Ministerstwa Infrastruktury i Rozwoju

https://www.ssllabs.com/ssltest/analyze.html?d=mir.gov.pl
Wersja offline


Strona Ministerstwa Edukacji Narodowej
https://www.ssllabs.com/ssltest/analyze.html?d=men.gov.pl
Wersja offline


Strona e-GIODO
https://www.ssllabs.com/ssltest/analyze.html?d=egiodo.giodo.gov.pl
Wersja offline


Strona Ministerstwa Transport (może niedługo przestać działać)

https://www.ssllabs.com/ssltest/analyze.html?d=transport.gov.pl
Wersja offline

3 komentarze:

Internetowy pisze...

https://www.ssllabs.com/ssltest/analyze.html?d=cia.gov&s=23.204.179.36 też ciekawie się prezentuje

Adam Ziaja pisze...

"Wynik skanu jest dość niepokojący. Protokół TLS 1.2 został zdefiniowany w sierpniu 2008. Natomiast obsługa TLS 1.2 w popularnej bibliotece openssl jest od marca 2012 (wersja 1.0.1)." -- "nie znam się, to się wypowiem", to że pokazuje się ostrzeżenie to nie oznacza, że jest to błędem i zdecydowanie nie ma tutaj powodów do niepokoju. Potrafisz napisać czemu TLS 1.1 jest gorszy od TLS 1.2?

Robert Socha pisze...

Strona mac.gov.pl nie obsługuję protokołu TLS 1.1. Przynajmniej nie w momencie wykonywania testu.
Obsługuję SSLv3 i TLS 1.0. Co do tej wersji TLS to parę spraw można by wymienić (np. beast czy lucky13).
Brak obsługi wersji 1.2 jest obecnie "napiętnowany": https://community.qualys.com/blogs/securitylabs/2014/01/21/ssl-labs-stricter-security-requirements-for-2014

Mój komentarz dotyczy braku wsparcia dla protokołów nowszych od TLS 1.0. Przemilczałem natomiast kwestię związane z HSTS czy DH o długości 1024 bitów.