RHCE serija: Implementacija HTTPS-a putem TLS-a pomoću Network Security Service (NSS) za Apache - 8. dio


Ako ste administrator sustava koji je zadužen za održavanje i zaštitu web poslužitelja, ne možete si priuštiti da ne ulažete sve napore kako biste osigurali da podaci koje poslužuje vaš server ili koji prolaze kroz njih budu u svakom trenutku zaštićeni.

Kako bi se osigurala sigurnija komunikacija između web klijenata i poslužitelja, protokol HTTPS rođen je kao kombinacija HTTP-a i SSL-a (Secure Sockets Layer) ili nedavno TLS (Transport Layer Security).

Zbog nekih ozbiljnih narušavanja sigurnosti, SSL je zastario u korist robusnijeg TLS-a. Iz tog razloga, u ovom ćemo članku objasniti kako osigurati veze između vašeg web poslužitelja i klijenata pomoću TLS-a.

Ovaj vodič pretpostavlja da ste već instalirali i konfigurirali svoj web poslužitelj Apache. Ako ne, pogledajte sljedeći članak na ovom web mjestu prije nego što nastavite dalje.

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

Instalacija OpenSSL-a i uslužnih programa

Prvo provjerite radi li Apache i da li su i http i https dopušteni kroz vatrozid:

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

Zatim instalirajte potrebne pakete:

# yum update && yum install openssl mod_nss crypto-utils

Važno: Imajte na umu da u gornjoj naredbi možete zamijeniti mod_nss mod_ssl ako želite koristiti OpenSSL knjižnice umjesto NSS-a (Network Security Service) za implementaciju TLS-a (koji ćete koristiti prepušteno je vama, ali mi ćemo koristiti NSS u ovom je članku jer je robusniji; na primjer, podržava nedavne kriptografske standarde kao što je PKCS # 11).

Konačno, deinstalirajte mod_ssl ako ste odlučili koristiti mod_nss ili viceversa.

# yum remove mod_ssl

Konfiguriranje NSS-a (Network Security Service)

Nakon instaliranja mod_nss, zadana konfiguracijska datoteka kreira se kao /etc/httpd/conf.d/nss.conf. Tada biste trebali osigurati da sve direktive Listen i VirtualHost usmjeravaju na port 443 (zadani port za HTTPS):

Listen 443
VirtualHost _default_:443

Zatim ponovo pokrenite Apache i provjerite je li modul mod_nss učitan:

# apachectl restart
# httpd -M | grep nss

Dalje, u konfiguracijskoj datoteci /etc/httpd/conf.d/nss.conf treba izvršiti sljedeća uređivanja:

1. Navedite direktorij baze podataka NSS-a. Možete koristiti zadani direktorij ili stvoriti novi. U ovom uputstvu koristit ćemo zadani:

NSSCertificateDatabase /etc/httpd/alias

2. Izbjegavajte ručni unos zaporke pri svakom pokretanju sustava spremanjem lozinke u direktorij baze podataka u /etc/httpd/nss-db-password.conf:

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

Gdje /etc/httpd/nss-db-password.conf sadrži SAMO sljedeći redak, a mypassword je lozinka koju ćete kasnije postaviti za NSS bazu podataka:

internal:mypassword

Uz to, njegova dopuštenja i vlasništvo trebaju biti postavljeni na 0640 i root: apache, odnosno:

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

3. Red Hat preporučuje onemogućavanje SSL-a i svih verzija TLS-a prije TLSv1.0 zbog ranjivosti POODLE SSLv3 (više informacija ovdje).

Svakako provjerite da svaka instanca NSSProtocol direktive glasi kako slijedi (vjerojatno ćete pronaći samo jednu ako niste hosting drugih virtualnih hostova):

NSSProtocol TLSv1.0,TLSv1.1

4. Apache će odbiti ponovno pokretanje jer se radi o samopotpisanom certifikatu i izdavača neće prepoznati kao valjanog. Iz tog ćete razloga u ovom konkretnom slučaju morati dodati:

NSSEnforceValidCerts off

5. Iako nije strogo potreban, važno je postaviti lozinku za NSS bazu podataka:

# certutil -W -d /etc/httpd/alias