NFsec Logo

Konfiguracja SSL dla Apache na 5+

17/02/2019 w Bezpieczeństwo Brak komentarzy.  (artykuł nr 679, ilość słów: 378)

P

oniższa konfiguracja (podobnie, jak w przypadku nginx) serwera Apache dla komunikacji po https pozwala na uzyskanie oceny A+ w teście przeprowadzanym przez firmę Qualys SSL Labs. Innymi mechanizmami, które zostały zwarte to: HSTS, DNS CAA, OSCP oraz HTTP2. Stosując poniższą konfigurację należy liczyć się, że może ona nie działać (lub niektóre jej funkcjonalności) z starszymi przeglądarkami i aplikacjami typu Java.

  Protocols http/1.1 h2

  SSLEngine on
  SSLCompression off
  SSLSessionTickets off
  SSLUseStapling on

  SSLCertificateFile /etc/apache2/ssl/root.pem
  SSLCertificateKeyFile /etc/apache2/ssl/server.key
  SSLCertificateChainFile /etc/apache2/ssl/root.pem

  SSLProtocol -All +TLSv1.2
  SSLHonorCipherOrder on
  SSLCipherSuite "HIGH:!aNULL:!MD5:!3DES:!CAMELLIA:!AES128:!AES256-SHA:\
                  !AES256-SHA256:!AES256-GCM-SHA384:!AES256-CCM8:!AES256-CCM:\
                  !DHE-DSS-AES256-SHA:!SRP-DSS-AES-256-CBC-SHA"

  SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparams4096.pem"
  SSLOpenSSLConfCmd ECDHParameters secp384r1
  SSLOpenSSLConfCmd Curves secp521r1:secp384r1

  Header always append Strict-Transport-Security "max-age=31536000;"

Plik dhparams4096.pem wygenerujemy poleceniem (może to zająć nawet kilkanaście minut):

openssl dhparam -out /etc/ssl/certs/dhparams4096.pem 4096


Do czego on jest nam potrzebny? Zanim klient i serwer będą mogli komunikować się zaszyfrowanym kanałem, klucze muszą zostać najpierw wymienione. Jest to słaby punkt tego procesu. Jeśli wymiana kluczy nie jest szyfrowana, a ktoś nieautoryzowany podsłucha komunikację, kolejny krok szyfrowania staje się bez znaczenia. To tak, jakbyśmy zostawili klucz do domu wetknięty po zewnętrznej stronie zamka. Dlatego wymiana kluczy powinna zostać zaszyfrowana przy użyciu algorytmu Diffie-Hellmana opartego na krzywych eliptycznych. Ponieważ klucze z 1024 bitami lub mniej są teraz łatwe do złamania najlepiej wygenerować klucz DH z co najmniej 2048 bitami lub najlepiej 4096.

Jeśli interesuje nas, jakie dokładnie szyfry kryją się za opcją SSLCipherSuite możemy wydać polecenie:

openssl ciphers 'HIGH:!aNULL:!MD5:!3DES:!CAMELLIA:!AES128:\
!AES256-SHA:!AES256-SHA256:!AES256-GCM-SHA384:!AES256-CCM8:\
!AES256-CCM:!DHE-DSS-AES256-SHA:!SRP-DSS-AES-256-CBC-SHA'

Każdy z zwróconych szyfrów możemy sprawdzić na stronie Cipher Suite Info. Pamiętajmy tylko, że nawet jeśli pozbędziemy się każdego słabego szyfru (ang. weak) i pozostawimy tylko te zalecane (ang. recommended) – możemy doprowadzić do sytuacji, w której niektóre urządzenia i systemy nie będą w stanie przeprowadzić negocjacji szyfrowania zaliczając błąd handshake failure.

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , , , ,

Komentowanie tego wpisu jest zablokowane.