Wyszukiwanie w witrynie

Seria RHCE: Implementacja protokołu HTTPS poprzez TLS przy użyciu usługi zabezpieczeń sieciowych (NSS) dla Apache — część 8


Jeśli jesteś administratorem systemu odpowiedzialnym za utrzymanie i zabezpieczanie serwera WWW, nie możesz sobie pozwolić na to, aby nie dołożyć wszelkich starań, aby zapewnić nieustanną ochronę danych przesyłanych przez Twój serwer lub przez niego przesyłanych.

Aby zapewnić bezpieczniejszą komunikację między klientami internetowymi a serwerami, narodził się protokół HTTPS będący połączeniem HTTP i SSL ( Secure Sockets Layer) lub ostatnio TLS (Transport Layer Security).

Z powodu poważnych naruszeń bezpieczeństwa protokół SSL został wycofany na rzecz bardziej niezawodnego protokołu TLS. Z tego powodu w tym artykule wyjaśnimy, jak zabezpieczyć połączenia między serwerem WWW a klientami za pomocą protokołu TLS.

W tym samouczku założono, że masz już zainstalowany i skonfigurowany serwer WWW Apache. Jeśli nie, zanim przejdziesz dalej, zapoznaj się z następującym artykułem w tej witrynie.

  1. Zainstaluj LAMP (Linux, MySQL/MariaDB, Apache i PHP) na RHEL/CentOS 7

Instalacja OpenSSL i narzędzi

Na początek upewnij się, że Apache jest uruchomiony i że zarówno http, jak i https są dozwolone przez zaporę sieciową:


systemctl start http
systemctl enable http
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https

Następnie zainstaluj niezbędne pakiety:


yum update && yum install openssl mod_nss crypto-utils

Ważne: pamiętaj, że możesz zastąpić mod_nss przez mod_ssl w powyższym poleceniu, jeśli chcesz używać OpenSSL zamiast NSS (Network Security Service) do implementacji TLS (którego użyjesz zależy wyłącznie od Ciebie) , ale w tym artykule będziemy używać NSS, ponieważ jest on bardziej niezawodny; na przykład obsługuje najnowsze standardy kryptograficzne, takie jak PKCS #11).

Na koniec odinstaluj mod_ssl, jeśli zdecydowałeś się używać mod_nss lub odwrotnie.


yum remove mod_ssl

Konfigurowanie NSS (usługi zabezpieczeń sieci)

Po zainstalowaniu mod_nss jego domyślny plik konfiguracyjny tworzony jest jako /etc/httpd/conf.d/nss.conf. Następnie upewnij się, że wszystkie dyrektywy Listen i VirtualHost wskazują port 443 (domyślny port dla HTTPS):


Listen 443
VirtualHost _default_:443

Następnie zrestartuj Apache i sprawdź, czy został załadowany moduł mod_nss:


apachectl restart
httpd -M | grep nss

Następnie należy dokonać następujących zmian w pliku konfiguracyjnym /etc/httpd/conf.d/nss.conf:

1. Wskaż katalog bazy danych NSS. Możesz użyć katalogu domyślnego lub utworzyć nowy. W tym samouczku użyjemy wartości domyślnej:


NSSCertificateDatabase /etc/httpd/alias

2. Unikaj ręcznego wprowadzania hasła przy każdym uruchomieniu systemu, zapisując hasło w katalogu bazy danych w /etc/httpd/nss-db-password.conf:


NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

Gdzie /etc/httpd/nss-db-password.conf zawiera TYLKO następującą linię, a mypassword to hasło, które ustawisz później dla bazy danych NSS:


internal:mypassword

Ponadto jego uprawnienia i własność powinny być ustawione odpowiednio na 0640 i root:apache:


chmod 640 /etc/httpd/nss-db-password.conf
chgrp apache /etc/httpd/nss-db-password.conf

3. Firma Red Hat zaleca wyłączenie SSL i wszystkich wersji TLS wcześniejszych niż TLSv1.0 ze względu na Luka >POODLE SSLv3 (więcej informacji tutaj).

Upewnij się, że każde wystąpienie dyrektywy NSSProtocol brzmi następująco (prawdopodobnie znajdziesz tylko jedno, jeśli nie hostujesz innych wirtualnych hostów):


NSSProtocol TLSv1.0,TLSv1.1

4. Apache odmówi ponownego uruchomienia, ponieważ jest to certyfikat z podpisem własnym i nie uzna wystawcy za ważny. Z tego powodu w tym konkretnym przypadku będziesz musiał dodać:


NSSEnforceValidCerts off

5. Choć nie jest to ściśle wymagane, ważne jest ustawienie hasła do bazy danych NSS:


certutil -W -d /etc/httpd/alias